資料結構之鏈棧
阿新 • • 發佈:2022-03-25
(一)鏈棧
鏈棧是運算受限的單鏈表,只能在連結串列頭部進行操作
// 鏈棧的結點
typeof struck StackNode{
SElemType data // 鏈棧的資料域
struck StackNode *next // 鏈棧的指標域
}StackNode, *LinkStack
鏈棧的頭指標指向棧頂的元素,和連結串列不一樣
(二)鏈棧的操作
1.鏈棧的初始化
void InitStack(LinkStack &S) {
if(S = NULL) return OK
else return FALSE
}
2.鏈棧的入棧
Status Push(LinkStact &S,SElemType e){ p = new StackNode // 生成新結點 p->data = e // 將新結點資料域置為e p->next = next // 將新結點插入棧頂 S = p // 修改棧頂指標 return OK }
3.棧頂的出棧
Staus Pop(LinkStack &S,SElemType & e) {
if(S == NULL) return ERROR
e = S -> data // 出棧的資料賦值給 出棧元素e
p = S // 賦值一個地址,方便後面銷燬此結點
S = S -> next // 將S指標移動到下一個結點
delete p // 銷燬結點
return OK
}
4.取棧頂元素
SElemType GetTop(LinkStack S){ if(S != NULL) return S ->data }