棧的鏈式儲存結構

2022-08-21 12:21:08 字數 959 閱讀 9470

1 鏈式儲存結構

棧的鏈式儲存結構,簡稱鏈棧。

由於棧只是棧頂在做插入和刪除操作,所以棧頂應該放在單鏈表的頭部。另外,都有了棧頂在頭部了,單鏈表中的頭結點也就失去了意義,通常對於鏈棧來說,是不需要頭結點的。

對於鏈棧來說,基本不存在棧滿的情況,除非記憶體已經沒有使用空間了。

對於空棧來說,鍊錶原來的定義是頭指標指向空,那麼鏈棧的空其實就是top=null。

鏈棧的結構**如下:

typedef struct

stacknode stacknode;

typedef

struct stacknode *linkstackptr;

typedef

struct

linkstack linkstack;

2 進棧操作

status push(linkstack *s, selemtype e)
3 出棧操作

status pop(linkstack *s, selemtype *e) 

*e = s->top->data;

p = s->top;

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

s->count --;

free(p);

//釋放結點p

return

ok;}

4 對比順序棧和鏈棧

順序棧和鏈棧的時間複雜度都為o(1). 如果棧的使用過程中元素變化不可預期,有時會很大,有時會很小,則選擇使用鏈棧。反之,如果它的變化在可控範圍內,選擇使用順序棧比較好。

棧 鏈式儲存結構

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

棧(鏈式儲存結構)

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

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

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