用棧實現佇列

2021-10-04 23:29:00 字數 807 閱讀 7595

解題思路:

此題可以用兩個棧實現,乙個棧進行入隊操作,另乙個棧進行出隊操作

出隊操作: 當出隊的棧不為空是,直接進行出棧操作,如果為空,需要把入隊的棧元素全部匯入到出隊的棧,然後再進行出棧操作

typedef

struct

myqueue;

//先建立兩個棧

myqueue*

myqueuecreate

(int maxsize)

// 將乙個元素放入佇列的尾部

void

myqueuepush

(myqueue* obj,

int data)

//從佇列首部移除元素

intmyqueuepop

(myqueue* obj)

}int front =

stacktop

(&obj->popst)

;//出隊棧進行出隊操作

stackpop

(&obj->popst)

;return front;

}//返回佇列首部的元素

intmyqueuepeek

(myqueue* obj)

}return

stacktop

(&obj->popst);}

//返回佇列是否為空

bool myqueueempty

(myqueue* obj)

//銷毀

void

myqueuefree

(myqueue* obj)

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

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

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

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

232 用棧實現佇列 225 用佇列實現棧

用棧實現佇列 佇列是先進先出,實現佇列的最直觀的方法是用鍊錶。但本題是要求使用棧。本題兩個stack相互倒,負負得正 class myqueue def init self self.instack self.outstack defpush self,x def pop self if len s...