4 1 1 棧的鏈式儲存結構及實現

2021-08-16 22:26:06 字數 1434 閱讀 3610

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

由於單鏈表有頭指標,而棧頂指標也是必須的,所以把棧頂放在單鏈表的頭部。另外,因為有了棧頂在頭部了,所以單鏈表中比較常用的頭結點也就失去了意義,通常對於鍊錶來說,是不需要頭結點的。

鏈棧的結構**:

typedef

struct stacknode

stacknode,*linkstackptr;

typedef

struct linkstack

linkstack;

邏輯圖:

**:

/*插入元素e為新的棧頂元素*/

status push(linkstack *s, selemtype e)

邏輯圖:

**:

/*若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error*/

status pop(linkstack *s, selemtype *e)

其他**:

#define ok 1

#define error 0

#define

true

1#define

false

0#define maxsize 20

/* 儲存空間初始分配量 */

typedef int status;

typedef int selemtype; /* selemtype 型別根據實際情況而定,這裡假設為 int */

/*構造乙個空棧s*/

status initstack(linkstack *s)

/*把s置為空棧*/

status clearstack(linkstack *s)

s->count =

0; return ok;

}/* 若棧s為空棧,則返回true,否則返回false*/

status stackempty(linkstack s)

/* 返回s的元素個數,即棧的長度*/

int stacklength(linkstack s)

/* 若棧不空,則用 e 返回 s 的棧頂元素,並返回 ok;否則返回 error */

status gettop(linkstack s, selemtype *e)

棧的鏈式儲存結構及實現

今天學習棧的鏈式儲存結構。鏈式儲存結構最大的好處就是沒有空間的限制,通過指標指向將結點像乙個鍊子一樣把結點鏈結,那麼棧的同樣可以用於鏈式儲存結構。棧的鏈式儲存結構,簡稱為鏈棧。想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部呢?由於單鏈表有頭指標,而棧頂指標也是必須的,那麼幹嘛不讓他...

棧的鏈式儲存結構及實現

棧的鏈式儲存結構,簡稱為鏈棧,如圖所示 對於鏈棧來說,基本不存在棧滿的情況,除非記憶體以沒有儲存空間。鏈棧的結構 如下 typedef struct stacknode stacknode,linkstackptr typedef struct linkstack linkstack 鏈棧的操作和普...

棧的順序儲存實現及鏈式儲存實現

include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...