C 佇列,棧的實現

2021-08-19 15:19:33 字數 2180 閱讀 4077

棧和佇列很早以前就知道有這東西了,兜兜轉轉也終於走到了這一步,都不難理解,總的來說可以看成//煉表頭插法和尾插法的變相使用//,但實現起來也有很多要注意的點

一:棧(後進先出,只有乙個操作點)

棧的實現:順序儲存結構和鏈式儲存結構

1:順序棧:使用陣列實現

#include//輸出為:0,1,2,3,4,5,6,7,8,9

#include//9,8,7,6,5

#define maxsize 100//4

#define true 1

#define false 0

typedef struct

seqstact;

seqstact *create()//建立乙個空棧

int push(seqstact *s,int e)

s->top++;

s->data[s->top]=e;

return true;

}int pop(seqstact *s,int *e)

int gettop(seqstact *s,int *e)//得到此時棧頂元素

else }

int main(void)

printf("\n");

for(i=0;i<5;i++)

printf("\n");

printf("%d",s->data[s->top]);

}

2:鏈棧:同煉表相似,不同的是,鏈棧只能操作頭節點後的節點,既棧頂。

#include#include#define ok 1

#define error 0

typedef struct node//宣告棧的資料結構 

lsnode;

typedef struct

lstack;

lstack *create()//建立乙個空棧 

int push(lstack *s,int e)

else

return ok;

}int pop(lstack *s)//棧的輸出 

else

}int reach_top(lstack *s)//輸出此時的棧頂 

int main(void)

for(i=0;i<5;i++)

printf("\n");

x=reach_top(s);

printf("%d\n",x);

}

注:在這裡並沒有考慮滿棧情況,只要malloc還可以申請到空間,就不會出現滿棧情況。

二:佇列(先進先出,有頭尾兩個操作方向,首部插入,尾部刪除)

1.線性儲存(主要採用取餘思想)

隊空:隊尾隊頭相等

隊滿:對尾+1==隊頭

#include#include#define true 1

#define false 0

#define maxsize 10

typedef struct

queue;

queue *create()

int inqueue(queue *ql,int x)

int empty(queue *ql)

int quit(queue *ql,int *e)

return false;

}int main(void)

printf("\n");

for(i=0;i<12;i++)

}

2.鏈隊

#include#include#define true 1

#define false 0

typedef struct node

node;

typedef struct

queue;

queue *create()

int in(queue *ql,int e)//入隊,尾插法 

int empty(queue *ql)//判斷是否為空 

int push(queue *ql,int e)//出隊 

else

return false;

}int main(void)

printf("\n");

for(i=0;i<5;i++)

}

佇列實現棧棧實現佇列

佇列是一種先進先出的資料結構,要想實現先進後出,需加乙個輔助佇列進行資料的來回倒 引用交換 從而實現棧結構。例如 5 4 3 2 1 用乙個輔助佇列裝 4 3 2 1,把5彈出,在把 4 3 2 1放回原佇列,如此反覆可變成5 4 3 2 1的棧結構。棧是一種先進後出的資料結構,要想實現先進先出,同...

佇列實現棧,棧實現佇列

兩個佇列實現棧 每次進入乙個佇列,取出得時候,把所有元素進入另乙個佇列,只留下乙個元素,以此實現棧的先進後出 filo package algorithmbymyself import j a.util.linkedlist import j a.util.queue 用兩個佇列實現乙個棧 publ...

佇列實現棧以及棧實現佇列

232.用棧實現佇列 簡單 225.用佇列實現棧 簡單 佇列是一種先進先出的資料結構,棧是一種先進後出的資料結構,形象一點就是這樣 這兩種資料結構底層其實都是陣列或者鍊錶實現的,只是 api 限定了它們的特性,那麼今天就來看看如何使用 棧 的特性來實現乙個 佇列 如何用 佇列 實現乙個 棧 首先,佇...