棧結構的特點:
棧是線性表結構的一種,但是棧結構的插入與刪除操作都只能從同一端進行,所以棧結構是一種受限制的線性表結構,資料的插入與刪除符合lifo的原則(也就是後進先出,先進後出)。
棧的結構:
對棧進行插入與刪除操作的一端稱為棧頂(top),另一端則稱為棧底(base);
棧的進本操作:
棧的基本操作有向棧中壓入元素的入棧(push)、刪除棧頂元素出棧(pop)…
下面進行乙個簡單的思考:
若使給定的n個元素以一定順序入棧,可任意出棧,那麼n個元素可以有多少種出棧順序?
經過推導可知,結果是乙個卡塔蘭數:
棧的結構可表示為:
規定a
na_n
an為棧頂,a
1a_1
a1為棧底。
下面對棧的部分操作進行實現:
//使用順序棧
#include
#include
#define init_stack_size 10
#define ok 1
#define erroe 0
using
namespace std;
typedef
struct stack
stack;
//初始化乙個棧
status init_stack
(stack &s)
//向棧中壓入元素e
status push
(stack &s,elemtype e)
//棧頂元素出棧
status pop
(stack &s,eletype &x)
//獲取棧頂元素e
status gettop
(stack &s,elemtype &e)
以上就是棧結構的一些簡單操作. 棧的簡單實現(順序棧 鏈棧)
include define maxsize 100 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 using namespace std typedef i...
順序棧的總結
基本資料結構之 順序棧 棧是一種先進後出的資料結構,我們可以使用乙個陣列來模擬棧的這種結構,將陣列的尾部當做棧的棧頂似乎是乙個不錯的選擇 插入和移除元素是不涉及到資料的移動 也可以很好的控制陣列的長度,和資料的進棧和出棧!首先先解析一下順序棧的資料結構 1 需要乙個資料域來儲存資料 考慮到可能儲存自...
順序棧的簡單實現
資料結構中順序棧的簡單實現和簡單操作的測試。順序棧的簡單實現 include define elemtype char define maxsize 50 using namespace std 結構定義 typedef struct sqstack 初始化 void initstack sqsta...