C 鏈式棧和順序棧

2021-10-04 02:34:25 字數 1871 閱讀 1101

分類:1.順序棧 2.鏈式棧

常用操作:push 和 pop

常見應用:1.括號匹配問題 2.逆波蘭表示式

說明:個人c++練習

鏈式棧

優點:棧的大小靈活

缺點:不能像陣列一樣靈活遍歷

#include

using

namespace std;

//*******鏈式棧*******

struct data

;struct stacknode

;//***初始化***

stacknode*

stack_init()

return

null;}

//*****入棧*****

void

stack_push

( stacknode* top,

const data& num )

//***彈出棧****

data stack_pop

(stacknode* top)

}//****輸入資料***

void

sinput

( stacknode* top)}}

//****遍歷輸出棧****

void

stack_print

(stacknode* top)

return;}

}//****銷毀棧****

bool

delete_stack

( stacknode* top)

delete top;if(

!top)

else

false;}

//***簡單測試***

intmain()

順序棧

優點:遍歷等操作方便

缺點:大小容易受限,改變大小需要重新分配空間

#include

using

namespace std;

//*******順序棧*******

struct data

;struct stack

;//***初始化***

stack*

sinit()

return

null;}

//****判斷棧是否為空****

bool

sempty

(stack*s)

//***判斷棧是否為滿***

bool

sfull

(stack* s)

//***清空棧***

void

sclear

(stack*s)

//***釋放棧***

void

sdelete

(stack* s)

}//***入棧***

void

spush

(stack* s,

const data& num)

else

}//***彈出棧***

data spop

(stack* s)

else

}//***資料輸入***

void

sinput

(stack* s)

cin>>a.age;

spush

(s,a);}

return;}

//***輸出資料***

void

print

(stack* s)}}

//***簡單測試***

intmain()

棧 實現鏈棧和順序棧)

按不同的儲存結構,可以將棧分為順序棧和鏈棧。順序棧的實現 typedef int datatype const int maxnum 1000 struct sqstack 判斷棧空 bool isempty else return false 判斷棧滿 bool isfull else retur...

順序棧和順序佇列

1.棧的定義 棧是限定在表尾進行插入和刪除操作的線性表 把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出的線性表。棧的插入操作,叫做進棧,也稱為壓棧,入棧。子彈入彈夾 棧的刪除操作,叫做出棧,也有的叫做彈棧。1 順序棧的進棧操作 插...

棧 棧 鏈式棧,順序棧,共享棧

棧也是一種線性表結構,只不過棧的操作是受限的,它的特點就是在棧頂方向新增新的元素,且刪除元素也只能從棧頂方向刪除。因此棧是一種lifo 後進先出 特性的資料結構。壓棧 新的元素放入棧的操作。出棧 從棧中移除乙個元素的操作。因為棧是一種線性結構,所以可以通過前面所學的鍊錶和順序表作為內部實現。我們可以...