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