棧的鏈式儲存結構的簡單實現

2021-10-05 08:21:54 字數 1407 閱讀 6697

二、鏈棧的簡單實現

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 鏈棧的操作和普...