要避免棧上溢,最好的辦法就是使用鏈式儲存結構,讓多個棧共享所有可用的儲存空間。所以,棧也可以採用鏈式儲存結構表示,這種結構的棧簡稱為鏈棧。
新入棧的元素即為鍊錶新的第乙個結點,只要系統還有儲存空間,就不會有棧滿的情況發生。乙個鏈棧可由乙個棧頂指標top唯一確定。
採用帶頭結點的單鏈表實現棧。因為棧的插入和刪除操作只在表頭進行,所以鍊錶的表頭指標top就作為棧頂指標,top始終指向當前棧頂元素前面的頭節點,即top->next為棧頂元素,當top->next==null,則代表棧空。
二、**實現
stack.h
#pragma once
#include
typedef struct stacknode stacktype;
//初始化
void
initstack
(stacktype *
*top)
//入棧操作
intpushstack
(stacktype *top, elemtype x)
//出棧操作
elemtype popstack
(stacktype *top)
else
}//取棧頂資料元素
elemtype gettop
(stacktype *top)
else
}
原始檔:
#include
#include
#include
typedef int elemtype;
#include"stack.h"
intmain()
printf
("\n出棧的順序為:");
while
(stack1-
>next != null)
system
("pause");
return0;
}
三、執行結果
鏈式儲存mysql 鏈棧 棧的鏈式儲存結構
前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...
帶頭結點和不帶頭結點的鏈棧基本操作
c 資料結構 把鏈棧想象成單鏈表頭結點的後插和後刪操作 不帶頭結點的鏈棧 include include include using namespace std typedef struct linknode1 listack1 void initstack1 listack1 l 進棧 lista...
資料結構 鏈棧(棧的鏈式儲存結構)
工程目錄結構 函式的返回結果,ok erreo true false 12 typedef int elemtype 結點資料域的資料型別 1314 endif common.c 1 include common.h 2 3status visit elemtype e 4linkstack.h 1...