二、鏈棧的簡單實現
1、鏈棧的整體結構的定義
typedef
int elemtype;
typedef
struct node
node,stack,
*pstack;
2、初始化(init)
void
init
(pstack pst)
}
3、壓棧(push)
因為鏈棧不存在棧滿的情況,除非是我們的記憶體不夠使用了。所以我們不需要寫判滿函式。但是由於我們要插入乙個結點,所以我們就需要生成乙個新的結點,所以我們就需要寫購買結點的函式。
node*
buynode
(elemtype val)
插入元素的操作如下圖所示:
**實現
void
push
(pstack pst,elemtype val)
//元素做乙個鍊錶的頭插
4、出棧(pop)
在進行出棧操作之前我們需要對鏈棧進行判空的操作,如果棧裡面沒有元素,就不能進行刪除元素的操作。
int
empty
(pstack pst)
刪除元素的操作如下圖所示:
**實現:
int
pop(pstack pst)
node* pcur = pst->next;
//第乙個資料結點
pst->next = pcur->next;
free
(pcur)
;return1;
}
5、獲取棧頂元素(gettop)
int
gettop
(patsck pst,elemtype* prt)
*prt = pst->next->data;
//第乙個資料結點的資料
return
1;}
6、銷毀函式(destory)
因為鏈棧所以我們最後得設計摧毀函式
void
destory
(pstack pst)
pst->next =
null
;}
棧的鏈式儲存結構及實現
今天學習棧的鏈式儲存結構。鏈式儲存結構最大的好處就是沒有空間的限制,通過指標指向將結點像乙個鍊子一樣把結點鏈結,那麼棧的同樣可以用於鏈式儲存結構。棧的鏈式儲存結構,簡稱為鏈棧。想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部呢?由於單鏈表有頭指標,而棧頂指標也是必須的,那麼幹嘛不讓他...
棧的鏈式儲存結構實現(五)
18.11.18 學習過之前的順序的棧了,這回介紹一下鏈式的棧 我們對棧進行操作時,通常都是在其棧頂進行,所以我們應該在鏈的頭部進行操作,我們之前學過的鍊錶大多是有頭結點的,頭結點可以大大方便我們對鍊錶的呼叫,現在,我們的這個鏈棧可以通過設定乙個棧頂指標top來代替頭結點,或者說起到頭結點的作用 鏈...
棧的鏈式儲存結構及實現
棧的鏈式儲存結構,簡稱為鏈棧,如圖所示 對於鏈棧來說,基本不存在棧滿的情況,除非記憶體以沒有儲存空間。鏈棧的結構 如下 typedef struct stacknode stacknode,linkstackptr typedef struct linkstack linkstack 鏈棧的操作和普...