time_limit
3000ms
memory_limit
10000kb
description
假設將迴圈佇列定義為:以域變數rear和length分別指示迴圈佇列中隊尾元素的位置和內含元素的個數。編寫相應的入佇列和出佇列的程式,並判斷迴圈佇列是否隊滿(在出佇列的演算法中要返回隊頭元素)。
input
假設佇列陣列為queue[maxsize],第一行輸入佇列大小n,第二行開始輸入若干入隊元素,隊滿時,停止入隊。第三行輸入出隊元素。
output
輸出入隊出隊操作後的迴圈佇列,並返回出隊元素的隊頭元素。
sample_input
53 4 6 2 7
4sample_output
6 2 7
6
#include #include #include #include#define initsize 500
using namespace std;
typedef int elemtype;
typedef struct quene, *pquene;
pquene init_quene()
p->length = p->front = 0;
p->rear = 0;
return p;
}void enquene(pquene p, elemtype x,int size)
//if length==size
if(p->rear==-1)p->rear=0;
p->base[p->rear] = x;
p->rear = (p->rear + 1) % size;
p->length++;
}elemtype dequene(pquene p,int size)
int isfull(pquene p,int size)
int isnull(pquene p)
int show(pquene p,int size)
printf("\n");
return 0;
}int showtop(pquene p)
int main()
flag = 1;
c = s[i++];
data = data * 10 + (c - 48);
} enquene(pquene, data,size);
char zf[50];
gets(zf);
scanf("%d", &out);
while (dequene(pquene,size) != out);
show(pquene,size);
showtop(pquene);
return 0;
}
資料結構 佇列 迴圈佇列
在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...
資料結構 佇列 迴圈佇列
資料結構 佇列 迴圈佇列 順序儲存 犧牲乙個空間單元來判段佇列滿狀態。q.front q.rear 1 initsize date 2017 4 16 include define elemtype char define initsize 100 typedef structsqqueue voi...
資料結構 迴圈佇列
所謂順序儲存結構就是用一組位址連續的儲存單元依次存放從隊頭到隊尾的元素。宣告兩個指標rear front分別用來指示隊尾元素的下一位置和隊頭元素的位置。初始化時rear front 0 插入新的元素時尾指標加1,元素出佇列時隊頭指標加1。不過這樣做有個問題,不論是入隊還是出隊,隊頭或隊尾指標都是加1...