棧的鏈式儲存結構,簡稱為鏈棧。
由於單鏈表有頭指標,而棧頂指標也是必須的,所以把棧頂放在單鏈表的頭部。另外,因為有了棧頂在頭部了,所以單鏈表中比較常用的頭結點也就失去了意義,通常對於鍊錶來說,是不需要頭結點的。
鏈棧的結構**:
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 開始...