#includeiostream
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為平定等服務(wù)建站,平定等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為平定企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
using namespace std;
template typename T
struct Node
{
T data;
struct Node *next;
};
template typename DATA
class cycle_queue
{
public:
NodeDATA *head;//隊(duì)列頭,不保存數(shù)據(jù)
NodeDATA *end;//隊(duì)列尾,不保存數(shù)據(jù)
unsigned int size;
cycle_queue()
{
head=new NodeDATA();
end=new NodeDATA();
size=0;
}
void push_back(DATA d)//入隊(duì)列
{
NodeDATA *tmp;
tmp=new NodeDATA;
tmp-data=d;
if(size==0)
{
head-next=tmp;
end-next=tmp;
tmp-next=tmp;
}
else
{
end-next-next=tmp;
end-next=tmp;
tmp-next=head-next;
}
++size;
}
DATA front()//取隊(duì)頭元素,不負(fù)責(zé)檢查是否為空
{
DATA re;
if(size!=0)
re=head-next-data;
return re;
}
void pop()//隊(duì)頭元素出列,不負(fù)責(zé)檢查是否為空
{
if(size!=0)
{
NodeDATA *tmp;
tmp=head-next;
head-next=head-next-next;
end-next-next=head-next;
delete tmp;
--size;
}
}
bool empty()//隊(duì)列判空
{return size==0;}
};
int main()
{
int a[10]={10,9,8,7,6,5,4,3,2,1};
class cycle_queueint cq;
short i;
for(i=0;i!=10;++i)
cq.push_back(a[i]);
cout"**************"endl;
while(!cq.empty())
{
coutcq.front()" ";
cq.pop();
}
cini;
return 0;
}
//定義一個(gè)int型數(shù)組que,長(zhǎng)度為N(常量切大于2).
int?que[N];
int?rear=0,front=0;?//隊(duì)尾?隊(duì)頭
判斷隊(duì)列已滿:
if((front+1)%N==rear%N)??//成立則隊(duì)列已滿
判斷隊(duì)列為空
if((rear==front))?//成立則隊(duì)列空
入隊(duì)(一般在入隊(duì)前判斷隊(duì)列是否已滿)
//將val入隊(duì)
que[front++]=val;
front%=N;
出隊(duì)(一般在出隊(duì)前判斷隊(duì)列是否為空)
rear=(rear+1)%N;
下一個(gè)要出隊(duì)的元素(一般先判斷是否為空)
que[rear];
//定義隊(duì)列結(jié)構(gòu)體
typedef struct Qnode
{
int data;
struct Qnode *next;
} Queue , *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
} linkQnode;
//創(chuàng)建一個(gè)隊(duì)列
initQueue (linkQnode *q)
{
q - front = q - rear = (QueuePtr) malloc (sizeof (Queue));
if (!q - front) exit (0);
q - front - next = NULL;
}
//入隊(duì)列
EnterQueue (linkQnode *q , int item)
{
QueuePtr p;
p = (QueuePtr) malloc (sizeof (Queue));
if (!p) exit (0);
p - data = item;
p - next = NULL;
q - rear - next = p;
q - rear = p;
}
//出隊(duì)列
DelQueue (linkQnode *q , int *item)
{
QueuePtr p;
if (q - front = q - rear) return;
p = q - front - next;
*item = p - data;
q - front - next = p - next;
if (q - rear == p)
q - rear = q - front;
free (p);
}
文章標(biāo)題:C語(yǔ)言循環(huán)隊(duì)列出隊(duì)主函數(shù) 循環(huán)隊(duì)列的主函數(shù)怎么寫
轉(zhuǎn)載來(lái)源:http://muchs.cn/article36/dophgpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、商城網(wǎng)站、品牌網(wǎng)站制作、軟件開發(fā)、面包屑導(dǎo)航、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)