分類: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 後進先出 特性的資料結構。壓棧 新的元素放入棧的操作。出棧 從棧中移除乙個元素的操作。因為棧是一種線性結構,所以可以通過前面所學的鍊錶和順序表作為內部實現。我們可以...