棧的鏈式儲存結構,簡稱為鏈棧。
棧因為只是棧頂來做插入和刪除操作,所以比較好的方法是將棧頂放在單鏈表的頭部,棧頂指標和單鏈表的指標合二為一。
描述一下儲存過程,當來了乙個新的元素newnode,我們讓它先指向下乙個元素,即原來的棧頂元素,使用newnode.next=top,然後讓top指向新的元素newnode,使用top = newnode
鏈棧的方法實現:linkstack.cs
using system;
using system.collections.generic;
using system.text;
namespace 棧
}//清空棧中所有的資料
public void clear()
//取得棧中元素的個數
public int getlength()
//判斷棧中是否有資料
public bool isempty()
//取得棧頂的元素,不刪除棧頂
public t peek()
//出棧,取得棧頂元素,然後刪除
public t pop()
//入棧
public void push(t item)}}
program.cs
using system;
using system.collections;
using system.collections.generic;
namespace 棧}}
node類:node.cs
using documentformat.openxml.drawing.charts;
using system;
using system.collections.generic;
using system.text;
namespace 棧
public node(t data)//給data賦值的構造方法
public node(t data, nodenext)//這個構造方法用來給data和next同時賦值
public node(nodenext)//這個構造方法用來給next賦值
//需要在外部進行修改,所以定義屬性
public t data
set
}public nodenext
set }}
}
實現棧的介面:istackds.cs
using system;
using system.collections.generic;
using system.text;
namespace 棧
//得到資料數量
int getlength();
bool isempty();
void clear();
void push(t item);
t pop();
t peek();}}
資料結構與演算法 4棧的鏈式儲存
上一章我們講了棧的線性儲存這裡我們將會講解棧的鏈式儲存,和線性表的順序儲存和鏈式儲存一樣。棧的鏈式儲存也解決了棧的順序儲存需要事先分配整塊儲存空間的問題。typedef struct stack sstack,psstack sstack stackinit 建立棧的頭指標,返回棧的頭指標的位址。v...
資料結構 鏈式棧
編譯錯誤 passing const linkstack as this argument discards qualifiers fpermissive 解決方法 c 中const 引用的是物件時只能訪問該物件的const 函式,因為其他函式有可能會修改該物件的成員,編譯器為了避免該類事情發生,會...
資料結構 棧 棧的鏈式儲存結構
資料結構 棧 棧的鏈式儲存結構 用頭插法建立的鏈棧,棧頂元素為s next所指結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnode linkstack void ...