資料結構 棧

2021-08-17 21:03:06 字數 2393 閱讀 3201

是一種限制訪問點的線性表, 只能在一端進行插入或刪除操作

典型的先入後出

順序儲存結構:順序棧鏈式儲存結構:鏈棧

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 插入 進...