棧是對新增資料和運算元據有限制的資料結構。有這「先來後服務」的思想,棧可被應用到遞迴這一思想中。棧又分為順序棧(雙向棧),鏈棧。
1:順序棧
順序棧的資料結構定義:
#ifndef stack_h_
#define stack_h_
#include #include #define maxsize 20
typedef structsqstack;
int push(sqstack *s);
int pop(sqstack *s);
void init(sqstack *s);
int result(sqstack *s);
#endif
順序棧的操作:
#define _crt_secure_no_warnings 1
#include "stack.h"
//初始化棧
void init(sqstack *s)
//入棧
int push(sqstack *s)
int number = 0;
scanf("%d", &number);
s->top++;
s->data[s->top] = number;
return s->data[s->top];
}//出棧
int pop(sqstack *s)
int elem = s->data[s->top];
s->top--;
return elem;
}
2:雙向棧是把乙個棧當做兩個棧來使用,提高空間利用率,棧的棧底和棧頂分別做兩個棧的棧底,兩個中同時向中間生長。
雙向棧的資料結構:
#ifndef _doublestack_h_
#define _doublestack_h_
#include #include #define max 100
typedef structdoublestack;
void init(doublestack *s);
int push(doublestack *s, int elem, int stacklocation);
int delet(doublestack *s,int elem ,int stacklocation);
#endif
雙向棧的操作:
#define _crt_secure_no_warnings 1
#include "doublestack.h"
//初始化
void init(doublestack *s)
//入棧
int push(doublestack *s, int elem, int stacklocation)
if (stacklocation == 1)
if (stacklocation == 2)
return 0;
}//出棧並刪除元素
int delet(doublestack *s, int elem, int stacklocation)
if (stacklocation == 1)
if (stacklocation == 2)
return 0;
}
3:鏈棧是資料元素以單鏈表的形式儲存,故不存在棧滿的情況;
鏈棧的資料結構:
#ifndef _linkstack_h_
#define _linkstack_h_
#include #include typedef struct stacknode *linkstackptr,stacknode;
typedef struct linkstacklinkstack;
void init(linkstack *s);
int push(linkstack *s, int elem);
int pop(linkstack *s, int elem);
#endif
#define _crt_secure_no_warnings 1
#include "linkstack.h"
//初始化
void init(linkstack *s)
//入棧
int push(linkstack *s, int elem)
//出棧
int pop(linkstack *s, int elem)
linkstackptr p;
elem = s->top->data;
p = s->top;
s->top = s->top->next;
free(p);
s->count--;
return elem;
}
資料結構 棧 棧
可以把棧想像成乙個桶 進棧 就是把和桶口一樣大的燒餅往桶裡面扔 出棧 就是把燒餅拿出來 特點 先進後出。先扔進去的燒餅最後才能拿出來,最後扔進去的燒餅,第乙個拿出來 剛開始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 插入 進...