棧的鏈式儲存結構

2021-08-29 01:21:58 字數 2305 閱讀 4262

#ifndef strack_list

#define strack_list

#include

#include

#include

typedef int elemtype;

typedef struct node

node,*nodeptr;

typedef struct nodelist

nodelist,*nodelistptr;

nodelistptr initstrack(); //初始化棧

void pushstrack(nodelistptr s, elemtype e); //入棧

void pop(nodelistptr s, elemtype* e); //刪除棧頂元素並將其賦值給e

void gettop(nodelistptr s,elemtype* e); //返回棧頂元素

void freestrack(nodelistptr s); //釋放棧記憶體

bool emptystrack(nodelistptr s); //判斷棧是否為空

int getlength(nodelistptr s); //返回棧的長度

void printstrack(nodelistptr s); //列印棧

#endif

#include "strack.h"

nodelistptr initstrack()

void pushstrack(nodelistptr s, elemtype e)

nodeptr newnode = (nodeptr)malloc(sizeof(node));

newnode->data = e;

newnode->next = s->top->next;//頭結點不儲存資料

s->top->next = newnode;

s->length++;    

}void pop(nodelistptr s, elemtype* e)

*e = s->top->next->data;

nodeptr freenode = s->top;

s->top = s->top->next;

free(freenode);

s->length--;

}void gettop(nodelistptr s,elemtype* e)

*e = s->top->next->data;

}void freestrack(nodelistptr s)

nodeptr* tempnode = &(s->top);

while (!emptystrack(s))

//free(s);

}bool emptystrack(nodelistptr s)

return false;

}int getlength(nodelistptr s)

return s->length;

}void printstrack(nodelistptr s)

nodeptr tempnode = s->top->next;

while (tempnode != null)}/

#include "strack.h"

int main()

puts("輸出棧的長度");

printf("%d\n", getlength(s));

puts("列印棧");

printstrack(s);

putchar('\n');

puts("列印棧頂元素");

gettop(s, &b);

printf("%d\n",b);

puts("刪除棧頂元素,並將其賦值給a");

pop(s, &a);

puts("輸出a");

printf("%d\n",a);

puts("列印棧");

printstrack(s);

puts("輸出棧的長度");

printf("%d\n", getlength(s));

puts("釋放棧");

freestrack(s);

puts("輸出棧的長度");

printf("%d\n", getlength(s));

puts("列印棧頂元素");

棧 鏈式儲存結構

講完了棧的順序儲存結構,現在來看棧的鏈式儲存結構,簡稱為鏈棧。想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部?由於單鏈表有頭指標,而棧頂指標也是必須的,所以比較好的辦法是把棧頂放在單鏈表的頭部。都已經有了棧頂在頭部了,單鏈表中常用的頭結點也就失去了意義,通常對於鏈棧來說,是不需要頭...

棧(鏈式儲存結構)

通常由乙個一維陣列和乙個棧頂元素變數組成 如下 define maxsize struct stacknode struct stacknode createstack void push struct stacknode s,elementtype x elementtype pop struct...

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...