整數序列環形佇列
問題及程式碼:
/*
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:queue.cpp
* 作 者:單昕昕
* 完成日期:2016年3月31日
* 版 本 號:v1.0
* 問題描述:從鍵盤輸入一個整數序列,當a[i]>0時,a[i]進隊;
當a[i]<0時,隊首元素出隊;當a[i]=0時,輸入結束。
要求佇列處理成環形佇列,異常(滿)時列印錯誤資訊。
* 程式輸入:一個字串表示式。
* 程式輸出:括號是否正確配對。
*/
#include<iostream>
#include<cstring>
#include<malloc.h>
using namespace std;
const int MaxSize=100;
typedef struct
{
int data[MaxSize];
int Front,rear;
} SqQueue;
SqQueue *sq;
void initQueue(SqQueue *&q)//初始化
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->Front=q->rear=0;
}
bool enQueue(SqQueue *&q,int e)//進隊
{
if((q->rear+1)%MaxSize==q->Front)
return false;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return true;
}
bool deQueue(SqQueue *&q)//出隊
{
if(q->Front==q->rear)
return false;
q->Front=(q->Front+1)%MaxSize;
cout<<q->data[q->Front]<<endl;
return true;
}
bool QueueEmpty(SqQueue *q)//判空
{
return(q->Front==q->rear);
}
bool Full(SqQueue *q)
{
return((q->rear+1)%MaxSize==q->Front);
}
void DestroyQueue(SqQueue *&q)//銷燬
{
free(q);
}
int main()
{
initQueue(sq);
/*int n;
cout<<"n=";
cin>>n;*/
int i,a[MaxSize],cnt=0;
for(i=0; ; ++i)
{
cin>>a[i];
++cnt;
if(a[i]>0)//入隊
{
if(!Full(sq))
enQueue(sq,a[i]);
else
cout<<"FULL!"<<endl;
}
else if(a[i]<0)//隊首出隊
{
--cnt;
if(!QueueEmpty(sq))
deQueue(sq);
else
cout<<"EMPTY!"<<endl;
}
else if(a[i]==0)//輸入結束
{
--cnt;
cout<<"輸入結束!"<<endl;
break;
}
}
for(i=0; i<cnt; ++i)
deQueue(sq);
return 0;
}
相關文章
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- C語言之環形佇列C語言佇列
- 資料結構與演算法——佇列(環形佇列)資料結構演算法佇列
- 使用陣列實現環形佇列Scala版本陣列佇列
- 陣列模擬佇列進階版本——環形佇列(真正意義上的排隊)陣列佇列
- 第七週 專案一 建立順序環形佇列佇列
- 基於Python實現環形佇列高效定時器Python佇列定時器
- 《環形佇列》遊戲高《TPS》模式下減少cpu執行緒切換佇列遊戲模式執行緒
- 分享一篇關於Python實現環形佇列高效定時器Python佇列定時器
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- 約瑟夫環 佇列+連結串列佇列
- 佇列、阻塞佇列佇列
- [CareerCup] 14.6 CircularArray 環形陣列陣列
- iOS 多執行緒--GCD 序列佇列、併發佇列以及同步執行、非同步執行iOS執行緒GC佇列非同步
- Yarn 生產環境多佇列配置Yarn佇列
- iOS執行緒、同步非同步、序列並行佇列iOS執行緒非同步並行佇列
- 佇列-單端佇列佇列
- canvas環形倒數計時Canvas
- 佇列 和 迴圈佇列佇列
- 【佇列】【懶排序】佇列Q佇列排序
- 為VNPY的K線序列管理工具ArrayManager增加對數收益率佇列佇列
- Canvas環形倒數計時元件Canvas元件
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- 457. 環形陣列是否存在迴圈陣列
- 圖解--佇列、併發佇列圖解佇列
- 單調佇列雙端佇列佇列
- 佇列佇列
- STL醜數(set+優先佇列)佇列
- 最長等差數列;及子序列分析
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- Kafka 延時佇列&重試佇列Kafka佇列
- 專案三 負數把正數趕出佇列佇列
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- 找最小的k個數(優先佇列)佇列
- 稀疏陣列、佇列陣列佇列
- 阻塞佇列一——java中的阻塞佇列佇列Java
- 07-主佇列和全域性佇列佇列