C語言 用棧實現佇列

2021-10-04 23:20:45 字數 1215 閱讀 7516

要想用棧實現佇列功能,則至少需要2個棧。

儲存資料的棧按照棧的後進先出原則依次進入另乙個棧,再按照棧的後進先出原則出棧就實現了佇列的先進先出,相當於負負得正的感覺。

typedef

int type;

typedef

struct stack stack;

//棧初始化

void

stackinit

(stack* sl, size_t n)

//入棧

void

stackpush

(stack* sl, type x)

//尾插

sl->array[sl->size++

]= x;

}//出棧

void

stackpop

(stack* sl)

}//獲取棧頂元素

type stacktop

(stack* sl)

//棧判空

intstackempty

(stack* sl)

return0;

}//獲取棧長度

size_t stacksize

(stack* sl)

//棧銷毀

void

stackdestory

(stack* sl)

typedef

struct

myqueue;

myqueue*

myqueuecreate()

void

myqueuepush

(myqueue* obj,

int x)

intmyqueuepop

(myqueue* obj)

} ret =

stacktop

(&obj->popst)

;stackpop

(&obj->popst)

;return ret;

}int

myqueuepeek

(myqueue* obj)

}return

stacktop

(&obj->popst);}

bool myqueueempty

(myqueue* obj)

void

myqueuefree

(myqueue* obj)

用棧實現佇列 用佇列實現棧

棧的特點 filo firstinlastout 僅能從棧頂插入,刪除元素。最基本的介面包括push 從棧頂壓入元素 pop 從棧頂彈出元素 佇列的特點 fifo firstinfirstout 僅能從隊頭刪除元素,從隊尾插入元素。最基本的介面包括enque 從隊尾插入元素 deque 從隊頭刪除元...

C 用棧實現佇列

實現 使用棧實現佇列的下列操作 push x 將乙個元素放入佇列的尾部。pop 從佇列首部移除元素。top 返回佇列首部的元素。empty 返回佇列是否為空。示例 myqueue queue newmyqueue queue.push 1 queue.push 2 queue.top 返回 1 qu...

用棧實現佇列,用佇列實現棧。好玩!!!

因為在資料結構中,棧和佇列長得實在是太像了,將他們拿來比較是不可避免的,棧 後進先出,而佇列 先進先出。同樣是只能在一端進行操作,那麼問題來了,能相互實現?能不能得好好分析一下嘛,如果是用兩個棧來實現佇列,好像這操作可以哦。一下,你就明白!顯然用兩個棧可以實現佇列的功能,就是借助另乙個棧來中轉一下,...