91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中怎么實現鏈棧

發布時間:2021-05-20 12:01:34 來源:億速云 閱讀:148 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關C語言中怎么實現鏈棧,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

鏈棧圖解

C語言中怎么實現鏈棧

鏈棧的常規操作

/********************* 鏈棧的常規操作 ****************************/

LinkStack 	 InitLinkStack();			// 初始化鏈棧
int   	 	 StackEmpty();				// 判斷鏈棧空
int   	 	 StackLength();				// 求鏈棧長(鏈棧元素個數)
int    		 Push();					// 入棧 壓棧
ElemType 	 Pop();						// 出棧 彈棧
void 	 	 DestroyStack();			// 銷毀鏈棧

/***************************************************************/

定義鏈棧結構體

#include "stdio.h"
#include "malloc.h"


#define TRUE  1
#define FALSE 0

typedef int ElemType;		// 鏈棧存儲元素的數據類型


/*
 *	定義鏈棧結構體
*/
typedef struct Node{
	ElemType data;			// 棧結點數據域
	struct Node *next;		// 棧結點指針域
}*LinkStack, Node;

初始化鏈棧

// 初始化鏈棧(帶頭結點的鏈棧)
LinkStack InitLinkStack(){
	LinkStack s = (LinkStack)malloc(sizeof(struct Node));
	s -> next = NULL;
	return s;
}

鏈棧判空

/*
 *	判斷鏈棧是否空
 *  s 鏈棧
*/
int StackEmpty(LinkStack s){
	if(s == NULL){
		return FALSE;
	}
	return s -> next == NULL;
}

因為是鏈式存儲結構,無需鏈棧判滿。

計算鏈棧的長度

/*
 *	求鏈棧長度(棧中元素個數)
 *  s 鏈棧
*/
int StackLength(LinkStack s){
	LinkStack p;
	int len = 0;
	if(StackEmpty(s)){
		return FALSE;
	}
	p = s -> next;	// 帶頭結點的鏈棧要先移動一下
	while(p != NULL){
		len ++;
		p = p -> next;
	}
	return len;
}

鏈棧入棧(Push)

/*
 *	入棧 壓棧
 *  s 鏈棧
 *  data 入棧數據
*/
int Push(LinkStack s, ElemType data){
	// 分配入棧結點
	Node *new_node = (Node *)malloc(sizeof(struct Node));
	if (new_node == NULL) return FALSE;		// 結點分配失敗
	
	// 跟單鏈表一樣使用頭插法
	new_node -> data = data;
	new_node -> next = s -> next;
	s -> next = new_node;
	return TRUE;
}

鏈棧出棧(Pop)

/*
 *	出棧 彈棧
 *	s 鏈棧
*/
ElemType Pop(LinkStack s){
	LinkStack top;
	ElemType data;
	// 判棧空
	if(StackEmpty(s)){
		return FALSE;
	}
	top = s -> next;	// 訪問棧頂結點
	data = top -> data;	// 取出棧頂元素
	s -> next = top -> next;
	free(top);			// 釋放棧頂空間
	return data;
}

鏈棧各操作測試

// 程序主入口
int main(int argc, char const *argv[])
{
	LinkStack s = InitLinkStack();
	printf("StackEmpty():%d\n", StackEmpty(s));
	printf("StackLength():%d\n\n", StackLength(s));

	// 入棧元素
	ElemType datas[] = {1, 3, 5, 7, 9};

	// 動態計算入棧元素個數
	int len = sizeof(datas) / sizeof(datas[0]);	

	// for循環依次入棧
	printf("Push():");
	for(int i = 0; i < len; i++){
		printf("%d\t", datas[i]);
		Push(s, datas[i]);
	}
	printf("\nStackEmpty():%d\n", StackEmpty(s));
	printf("StackLength():%d\n\n", StackLength(s));

	// 出棧 彈棧
	printf("Pop(): ");
	while(!StackEmpty(s)){
		printf("%d\t", Pop(s));
	}
	printf("\nStackEmpty():%d\n", StackEmpty(s));
	printf("StackLength():%d\n\n", StackLength(s));
	return 0;
}

結果如下:

StackEmpty():1
StackLength():0

Push():1        3       5       7       9
StackEmpty():0
StackLength():5

Pop(): 9        7       5       3       1
StackEmpty():1
StackLength():0

C語言是什么

C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發,使用C語言可以以簡易的方式編譯、處理低級存儲器。

關于“C語言中怎么實現鏈棧”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拜城县| 嘉祥县| 绿春县| 葫芦岛市| 浦东新区| 包头市| 黄石市| 沐川县| 鹤山市| 普洱| 白河县| 团风县| 顺平县| 郴州市| 宣城市| 临高县| 肇东市| 灵宝市| 平利县| 宕昌县| 扎鲁特旗| 嘉善县| 定安县| 乌什县| 左贡县| 册亨县| 华蓥市| 犍为县| 桐乡市| 昔阳县| 略阳县| 德安县| 巴马| 新乡市| 呼和浩特市| 鱼台县| 吉安市| 乌什县| 天长市| 都匀市| 涟水县|