棧佇列:使用兩個棧實現乙個佇列
思路:
1.入佇列,是將資料放入棧1
2.出佇列,是將棧1資料出棧後依次存入棧2,然後棧2進行出棧
這樣就模擬了佇列的 先進先出 思想
1.stack.h
#pragma once
#include
#include
#include
// 棧實現
typedef
int sdatatype;
#define max_size (100)
//棧結構定義:陣列 棧頂
typedef
struct stack stack; // 1.表示有效資料個數 2.top 下標表示當前可用位置
//初始化
void stackinit(stack *ps)
// 入(壓)棧
void stackpush(stack *ps, sdatatype data)
// 出棧
void stackpop(stack *ps)
// 返回棧頂元素,
sdatatype stacktop(stack *ps)
// 判斷棧是否為空
// 1 表示空, 0 表示非空
int stackisempty(stack *ps)
// 返回棧資料個數
int stacksize(stack *ps)
// 棧拷貝
void stackcopy(stack *pdest, stack *psrc)
void teststack()
2.squeue.h
#pragma once
#include
"stack.h"
#include
/* 棧佇列:使用兩個棧實現乙個佇列
思路:1.入佇列,是將資料放入棧1
2.出佇列,是將棧1資料出棧後依次存入棧2,然後棧2進行出棧
這樣就模擬了佇列的 先進先出 思想
*/// 棧佇列結構定義
typedef struct squeue squeue;
// 棧佇列初始化:也就是對佇列裡面的兩個棧進行初始化
void squeueinit(squeue *psq)
// 入佇列
void squeuepush(squeue *psq, sdatatype data)
// 出佇列
void squeuepop(squeue *psq)
}//棧2出棧
stackpop(p2);
}// 返回佇列首元素值
sdatatype squeuefront(squeue *psq)
}return stacktop(p2);
}void testsqueue()
3.main.c
#include "squeue.h"
int main()
兩個棧實現乙個佇列 兩個佇列實現乙個棧
這兩個題的思路比較相似。棧的特點是 先進後出 佇列的特點是 先進先出 不要怕!用兩個棧實現乙個佇列很簡單 再將top元素push到stack 2中,然後將stack 1 pop一次直到stack 1剩下最後乙個元素,這個就是最先push進去的,我們把它pop掉就可以了,同理,我們求queue的fro...
兩個棧實現乙個佇列,兩個佇列實現乙個棧
1 兩個棧實現乙個佇列 入隊時,直接壓入stack1中。出隊時,判斷stack2是否為空,如果stack2為空,則將stack1中的元素倒入stack2中,否則直接彈出stack2中的元素。入隊操作 void enqueue stack s1,stack s2,int m 出隊操作 void deq...
兩個棧實現乙個佇列 兩個佇列實現乙個棧
方法一 public class main 出棧操作 public int deletehead while stack1.isempty return stack2.pop 方法二 public class main public int deletehead throws exception i...