是一種限制訪問點的線性表, 只能在一端進行插入或刪除操作典型的先入後出
順序儲存結構:順序棧
鏈式儲存結構:鏈棧
typedef
struct sqstack;
操作集:
/*
*初始化, 這裡top存棧定元素的下乙個位置, 同時也是棧的大小
*/void initstack(sqstack &sq)
intsize(sqstack &sq)
int isempty(sqstack sq)
status push(sqstack &sq, elemtype x)
status pop(sqstack &sq, elemtype &x)
status top(sqstack sq, elemtype &x)
特點:結構定義:
typedef
struct lnodelnode;
/** 乙個頭結點(不儲存資訊)指向表頭
*/
操作集:
/*
*新建結點
*/lnode * newnode(elemtype x)
/**插入操作, 這裡棧頂第乙個結點是表頭的next指向的結點, 插入刪除都在表頭一端
*先入棧的元素在鍊錶中後被刪除(先進後出)
*由於是鏈式結構, 所以一般沒有容量限制, 插入操作都能夠成功
*/void push(lnode * head, elemtype x)
int isempty(lnode * head)
status pop(lnode * head, elemtype x)
status top(lnode * head, elemtype &x)
特點
#include
#include
#include
#include
#define max_size 100
#define status int
#define ok 1
#define error 0
#define elemtype node
#define qelemtype node
/** *sequence stack
**/int prior[256];
void init()
typedef
structnode;
node newnode(int _v, int _isop)
typedef
structsqqueue;
void initqueue(sqqueue &sq)
status push(sqqueue &sq, qelemtype x)
int isempty(sqqueue sq)
status pop(sqqueue &sq)
qelemtype front(sqqueue sq)
typedef
structsqstack;
void initstack(sqstack &sq)
int size(sqstack sq)
int isempty(sqstack sq)
status push(sqstack &sq, elemtype x)
status pop(sqstack &sq)
elemtype top(sqstack sq)
int isnum(char ch)
void dealwithoperator(sqstack &sta, sqqueue &sq, char op)
pop(sta);
}return;;
}while(!isempty(sta) && top(sta).v != '(' && prior[op] <= prior[top(sta).v])
push(sta, newnode(op, 1));
}double cal(double a, double b, int op)
int main()else
if(str[i] != '#')dealwithoperator(sta, sq, str[i]);}}
while(!isempty(sta))
std::stack
res;
while(!isempty(sq))else res.push(cur.v);
pop(sq);
}printf("%.0f\n", res.top());
}return
0;}
資料結構 棧 棧
可以把棧想像成乙個桶 進棧 就是把和桶口一樣大的燒餅往桶裡面扔 出棧 就是把燒餅拿出來 特點 先進後出。先扔進去的燒餅最後才能拿出來,最後扔進去的燒餅,第乙個拿出來 剛開始top 1 top 1 然後把進棧的元素賦值給data top 入棧操作 void push stack s,int x els...
資料結構 棧
例子 棧是一種被限制在只能在表的一端進行插入和刪除運算的線性表。區域性變數是用棧來儲存的 可以進行插入和刪除的一端稱為 棧頂 top 另一端稱為 棧底 bottom 當表中沒有元素時 表長為0的棧 稱為 空棧。棧的修改是按 後進先出的原則進行,因此棧被稱為後進先出 last in first out...
資料結構 棧
1.棧stack 是限定僅在表尾進行刪除和插入操作的線性表。允許插入刪除的一端叫做棧頂top,另外一端叫做棧底bottom。棧又稱為後進先出 lifo 的線性表。即表尾是指棧頂。2.順序棧 定義 top指向可存入元素的位置。typedef struct stacktypestacktype 插入 進...