資料結構之棧(C語言實現)

2021-10-23 01:13:46 字數 1936 閱讀 6673

table of contents定義

實現定義結構

定義操作初始化棧

判斷棧是否為空

訪問棧頂元素 出棧

入棧*注:對線性表操作的限制有很多,上述只介紹兩種主流的限制,在資料結構中叫做棧和佇列。

棧的概念比較抽象,舉個栗子(對,就是板栗的栗子)。

一群人依次走進乙個死胡同,寬度只夠通行乙個人。如果他們要出來,只能依次退出來。最後進去的人最先出來,在外面的人也只看的見最後進去的人是誰。這裡,進去乙個人叫做插入結點,出來乙個人叫做刪除結點。看的見最後進去的人,叫訪問結點。

棧是操作受限制的線性表,根據不同的儲存結構可分成順序棧和鏈式棧。

在順序棧中,可以將順序表的有效長度作為棧頂指標,在順序表的末尾刪除和插入節點。

在鏈式棧中,可以將鍊錶的頭結點作為棧頂指標,入棧採用頭插法。

#define list_init_size 10

#define listincrement 2

typedef int stacktype; //儲存單元型別

typedef struct stacknode stack;

這裡定義的實際上是順序表的結構,所以實現的也就是順序棧。只是操作方法比順序表的操作少很多。

int initstack(stack& stack)
給棧的基位址分配一段連續的儲存單元,並標記棧的長度為0。初始化成功返回1,初始化失敗返回0。

int isemptystack(stack stack)
棧為空,返回0,不為空返回非0。

int top(stack stack, stacktype& elem)
取出棧頂元素,傳值給形參elem,但不刪除棧頂元素。由於採用的是引用的方式,因此形參值的改變可以傳給實參。如果棧為空,返回0,棧非空,返回1。

int pop(stack& stack, stacktype& elem) 

return 0;

}

取出並刪除棧頂元素,傳值給形參elem。由於採用的是引用的方式,因此形參值的改變可以傳給實參。如果棧為空,返回0,棧非空,返回1。

int push(stack& stack, stacktype data) 

stack.elem = newbase;

stack.listsize += listincrement;

}stack.elem[stack.length] = data;

stack.length++;

return 1;

}

在棧頂插入元素。若,當前棧已滿,繼續分配記憶體單元再插入。返回1表示入棧成功,返回0表示入棧失敗。

最後附上標頭檔案的定義

/*

* stack.h

* *  created on: 2023年9月26日

*      author: flueky

*/#ifndef stack_h_

#define stack_h_

#define list_init_size 10

#define listincrement 2

typedef int stacktype; //儲存單元型別

typedef struct stacknode stack;

int initstack(stack&);

int isemptystack(stack);

int top(stack,stacktype&);

int push(stack&,stacktype);

int pop(stack&,stacktype&);

#endif /* stack_h_ */

資料結構 棧(C語言實現)

定義 一種先進後出的資料結構 實現 標頭檔案 include include typedef struct node 定義節點 pnode,node typedef struct stack 定義棧 stack,pstack 棧的初始化 void init pstack ps else 判斷棧非空 ...

資料結構 順序棧 C語言實現

順序棧實現 include define size 50 static int data size 宣告陣列data,用於儲存棧中陣列 static int index 宣告變數index,用於表示棧中元素個數 初始化棧 void init 清理棧 void deinit 判棧滿 int full ...

資料結構(C語言實現)之堆疊(順序棧)

棧的表示和操作的實現 資料結構課本上的都是偽 不能直接執行 但是偽 的好處還是很多的 便於理解 寫作快 實際上稍微改一下就可以了 最重要的還是理解順序棧這種資料結構 include stdio.h include define maxsize 100 define overflow 1 define...