順序表(順序儲存)迴圈佇列類(初始化,入隊,退隊,輸出排頭與排尾指標及元素)
迴圈佇列類:檔名 sq_Queue.h
判斷佇列有無資料根據s的值可判斷,如果s=0,則說明為空,反之,不為空時,還要判斷是否為滿,滿的條件是(s==0&&(rear==front));
注意:入隊與出隊,rear和front 都是加1;
#include <iostream>
using namespace std;
template <class T>
class sq_Queue
{
private:
int mm;//儲存空間容量
int front;
int rear;
int s;//標誌
T * q;
public:
sq_Queue(int);
void prt_sq_Queue();
int flag_sq_Queue();
void ins_sq_Queue(T);
T del_sq_Queue();
};
template <class T>
sq_Queue<T>::sq_Queue(int m)
{
mm=m;
q=new T[mm];
front=mm;
rear=mm;
s=0;
return;
}
template <class T>
void sq_Queue<T>::prt_sq_Queue()
{
int i;
cout<<"front="<<front<<endl;
cout<<"rear="<<rear<<endl;
if(s==0)
{
cout<<"佇列空"<<endl;
return;
}
i=front;
do
{
i=i+1;
if(i==mm+1)
i=1;
cout<<q[i-1]<<endl;
} while (i!=rear);
return;
}
template <class T>
int sq_Queue<T>::flag_sq_Queue()
{
if((s==1)&&(rear==front))
{
cout<<"佇列滿"<<endl;
return (-1);
}
if(s==0)
{
cout<<"佇列空"<<endl;
return 0;
}
return 1;
}
template <class T>
void sq_Queue<T>::ins_sq_Queue(T b)
{
if((s==1)&&(rear==front))
{
cout<<"Queue overflow"<<endl;
return;
}
rear=rear+1;
if(rear==mm+1)rear=1;
q[rear-1]=b;
s=1;
return;
}
template <class T>
T sq_Queue<T>::del_sq_Queue()
{
T y;
if(s==0)
{
cout<<"queue is empty"<<endl;
return (0);
}
front=front+1;
if(front==mm+1)//特別要注意等號“==”而不是“=“
front=1;
y=q[front-1];
if(rear==front)
s=0;
return y;
}
2.具體事例:檔名test3.cpp
#include "sq_Queue.h"
#include <stdlib.h>
int main()
{
sq_Queue<int> q(10);
cout<<"輸出排頭與隊尾指標已經隊中元素"<<endl;
q.prt_sq_Queue();
q.ins_sq_Queue(50);
q.ins_sq_Queue(60);
q.ins_sq_Queue(70);
q.ins_sq_Queue(80);
q.ins_sq_Queue(90);
q.ins_sq_Queue(100);
cout<<"輸出排頭與隊尾指標已經隊中元素"<<endl;
q.prt_sq_Queue();
cout<<"輸出退隊元素"<<endl;
cout<<q.del_sq_Queue()<<endl;
cout<<q.del_sq_Queue()<<endl;
cout<<q.del_sq_Queue()<<endl;
cout<<"再次輸出排頭與隊尾指標已經隊中元素"<<endl;
q.prt_sq_Queue();
system("pause");//可能是我的vs2010有點問題,ctrl+F5的結果一閃而過,以此採取此方法
return 0;
}
3.實驗結果
輸出排頭與隊尾指標已經隊中元素
front=10
rear=10
佇列空
輸出排頭與隊尾指標已經隊中元素
front=10
rear=6
50
60
70
80
90
100
輸出退隊元素
50
60
70
再次輸出排頭與隊尾指標已經隊中元素
front=3
rear=6
80
90
100
請按任意鍵繼續. . .
相關文章
- 佇列的順序儲存--迴圈佇列的建立佇列
- 佇列-順序儲存佇列
- 利用順序儲存結構實現雙端佇列的入隊和出隊操作佇列
- 順序迴圈佇列的介面設計佇列
- 佇列的順序儲存結構佇列
- 第2章 順序表及其順序儲存
- 列定義的順序和列儲存的順序
- 順序佇列基本操作佇列
- JavaScript for迴圈 執行順序JavaScript
- JVM類載入機制與類初始化順序JVM
- Java 類初始化順序Java
- Java類初始化順序Java
- 棧1: 順序儲存
- 程式流程 (順序,選擇,迴圈)
- java類初始化的順序Java
- 線性表之順序儲存結構
- 封裝優先順序佇列封裝佇列
- java類載入順序Java
- 順序表
- Java類(繼承)初始化順序Java繼承
- 11 線性表的順序儲存結構
- 第3章 順序表的鏈式儲存
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- DS順序表--類實現
- 10個隊中非空佇列按佇列號從小到大的順序串接成一條鏈佇列
- mysql儲存過程宣告順序MySql儲存過程
- 串的順序儲存結構
- 線性表的順序儲存-順序表,對“突然的自我”的否定,對自我的揚棄
- 佇列順序性引發的思考佇列
- 使用C#實現順序佇列C#佇列
- 順序表實現二分排序排序
- 順序表應用5:有序順序表歸併
- 順序表應用6:有序順序表查詢
- Java父子類載入順序Java
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- Java初始化順序Java
- 【劍指offer】調整陣列順序陣列
- thinkphp where in order 按照順序in的迴圈排序PHP排序