C語言中用棧+隊列實現(xiàn)隊列中的元素逆置
更新時間:2022年02月11日 09:55:15 作者:MyDreamingCode
這篇文章主要介紹了C語言中用利用棧和隊列實現(xiàn)隊列中的元素逆置的相關資料,對正在學習的小伙伴有一定的參考價值,需要的可以參考一下,希望對你有所幫助
下面舉例代碼:
提到的Q是一個隊列,S是一個空棧,實現(xiàn)將隊列中的元素逆置的算法
#include<stdio.h>
#define MaxSize 10
typedef int ElemType;
typedef struct{
?? ?ElemType data[MaxSize];
?? ?int front,rear;
}Queue;
typedef struct{
?? ?ElemType data[MaxSize];
?? ?int top;
}SqStack;
?
void InitStack(SqStack &S) //初始化棧
{
?? ?S.top = -1;
}
?
bool EmptyStack(SqStack S) //判斷???
{
?? ?if(S.top == -1)
?? ??? ?return true;
?? ?else
?? ??? ?return false;
}
?
bool OverflowStack(SqStack S) //判斷棧是否滿
{
?? ?if(S.top == MaxSize-1)
?? ??? ?return true;
?? ?else
?? ??? ?return false;
}
?
bool Push(SqStack &S,ElemType x) //進棧
{
?? ?if(OverflowStack(S))
?? ??? ?return false;
?? ?S.data[++S.top] = x;
?? ?return true;
}
?
bool Pop(SqStack &S,ElemType &x) //出棧
{
?? ?if(EmptyStack(S))
?? ??? ?return false;
?? ?x = S.data[S.top--];
?? ?return true;
}
?
void InitQueue(Queue &Q) //初始化隊列
{
?? ?Q.front = Q.rear = 0;
}
?
bool IsEmpty(Queue Q) //判斷隊列是否為空
{
?? ?if(Q.front == Q.rear)
?? ??? ?return true;
?? ?else
?? ??? ?return false;
}
?
bool IsOverflow(Queue Q) //判斷隊列是否滿
{
?? ?if((Q.rear+1)%MaxSize == Q.front)
?? ??? ?return true;
?? ?else
?? ??? ?return false;
}
?
bool EnQueue(Queue &Q,ElemType x) //進隊列
{
?? ?if(IsOverflow(Q))
?? ??? ?return false;
?? ?Q.data[Q.rear] = x;
?? ?Q.rear = (Q.rear+1)%MaxSize;
?? ?return true;
}
?
bool DeQueue(Queue &Q,ElemType &x) //出隊列
{
?? ?if(IsEmpty(Q))
?? ??? ?return false;
?? ?x = Q.data[Q.front];
?? ?Q.front = (Q.front+1)%MaxSize;
?? ?return true;
}
?
bool ReverseQueue(Queue &Q)?
{
?? ?SqStack S;
?? ?ElemType x;
?? ?InitStack(S);
?? ?while(!IsEmpty(Q)) //當隊列不為空時,將隊列中的元素依次放入棧中
?? ?{
?? ??? ?DeQueue(Q,x);
?? ??? ?Push(S,x);
?? ?}
?? ?while(!EmptyStack(S)) //當棧不為空時,再將棧中元素依次放入隊列中
?? ?{
?? ??? ?Pop(S,x);
?? ??? ?EnQueue(Q,x);
?? ?}
?? ?return true;
}
?
void main()
{
?? ?Queue Q;
?? ?InitQueue(Q);
?? ?EnQueue(Q,1);
?? ?EnQueue(Q,2);
?? ?EnQueue(Q,3);
?? ?ReverseQueue(Q);
?? ?printf("%d ",Q.data[Q.front]);
}(根據(jù)主函數(shù)中代碼)演示:
例如一開始隊列中元素為:3 2 1 ->出
1. 將隊列中元素依次放到棧中,此時棧:1 2 3 ->出
2. 再將棧中的元素依次放入隊列中,此時隊列:1 2 3 ->出
到此這篇關于C語言中用棧+隊列實現(xiàn)隊列中的元素逆置的文章就介紹到這了,更多相關用棧+隊列實現(xiàn)隊列中的元素逆置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Cocos2d-x UI開發(fā)之CCControlSwitch控件類使用實例
這篇文章主要介紹了Cocos2d-x UI開發(fā)之CCControlSwitch控件類使用實例,本文代碼中含大量注釋講解了CCControlSwitch控件類的使用,需要的朋友可以參考下2014-09-09

