資料結構棧(鏈式實現)

2021-06-29 03:38:44 字數 1063 閱讀 6078

真正的棧操作是在棧頂,這裡給出的棧是帶了頭結點的棧,也就是說head->next代表圖示棧頂,head->next->data是1

**實現:

#include

#include

typedef int datatype;

typedef struct snode

lsnode;

/*初始化帶頭結點的鏈式堆疊,初始化函式中不應該給head指標重新賦新位址,

因為這樣會導致外部傳入的頭節點位址沒有被使用,而是初始化函式內部找了個

記憶體位址,並給該記憶體位址上變數的next指標域賦值null,

而外部的(main函式裡的)頭結點的next指標域仍然是系統分配隨機值

會導致stacknotempty函式判斷棧任何時候都非空*/

void stackinitiate(lsnode *head)

/*判斷棧是不是空棧,如果是空棧則返回0,是非空棧則返回1,其實判斷的是頭結點指向的棧頂節點是否為空

棧頂空,表明棧是空棧*/

int stacknotempty(lsnode *head)

/*把資料元素x插入到鏈式堆疊head的棧頂作為新的棧頂*/

int stackpush(lsnode *spu, datatype x)

p->data = x;

p->next = spu->next; /*新結點鏈入棧頂*/

spu->next = p;

return 1;

}int stackpop(lsnode *spo, datatype *d)

*d = p->data;

spo->next = p->next;

free(p);

return 1;

}/*獲取棧頂元素*/

int stacktop(lsnode *head, datatype *d)

*d = p->data;

return 1;

}int main()

資料結構 棧 c鏈式實現

目的 學習資料結構,學校c語言 功能 棧的鏈式結構實現 include include define ok 1 define false 0 define true 1 define error 0 typedef int status typedef int selemtype 結點型別 type...

資料結構 鏈式棧

編譯錯誤 passing const linkstack as this argument discards qualifiers fpermissive 解決方法 c 中const 引用的是物件時只能訪問該物件的const 函式,因為其他函式有可能會修改該物件的成員,編譯器為了避免該類事情發生,會...

資料結構之鏈式棧的實現

上篇部落格我們已經對棧的基本操作有了介紹,現在我們利用鍊錶的方式來實現一下棧的基本操作。其實利用鍊錶更好實現棧,因為我們鍊錶的頭插與頭刪恰好可以與棧相對應,先進的後出,這裡我們就不過多的贅述,直接進行實現即可。pragma once include include include typedef c...