很明顯 這個只要實現隊列壹切就簡單了 其實c++有quene類 這裏我們自己實現它
剩下的自己來寫就好了 很簡單的
首先壹個鏈表的
#include?<iostream>using?namespace?std;
//鏈表
typedef?struct?QDode
{
int?n;?struct?QDode?*next;
}*pqdode,qdode;
//隊列
typedef?struct?MyQueue
{
pqdode?front;
pqdode?rear;
}*pmyqueue,myqueue;
bool?Init_queue(pmyqueue?qu);//初始化隊列
bool?Is_empty(pmyqueue?qu);//判斷隊列是否為空
void?Put_queue(pmyqueue?qu,int?val);//入隊
int?Out_queue(pmyqueue?qu);//出隊
int?Travel_queue(pmyqueue?qu);//遍歷隊列
void?Destory_queue(pmyqueue?qu);//銷毀隊列
//主函數
int?main()
{?
myqueue?queue={NULL,NULL};
Init_queue(&queue);//初始化
Put_queue(&queue,5);//入隊
if?(!Is_empty(&queue))
{
cout<<"隊列不為空"<<endl;
}
Put_queue(&queue,6);
Put_queue(&queue,7);
Put_queue(&queue,8);
Put_queue(&queue,9);
Travel_queue(&queue);//遍歷
int?val=Out_queue(&queue);
cout<<endl<<endl<<val<<endl<<endl;
Travel_queue(&queue);//遍歷
int?vall=Out_queue(&queue);
cout<<endl<<endl<<vall<<endl<<endl;
Travel_queue(&queue);//遍歷
Destory_queue(&queue);//銷毀
cout<<endl;
return?0;
}
bool?Init_queue(pmyqueue?qu)
{
?qu->front?=?new?qdode;
?if?(qu->front==NULL)
?{
?cout<<"動態分配內存失敗!"<<endl;
?return?false;
?}
?else
?{
qu->rear=qu->front;?qu->front->next=NULL;
?return?true;
?}
}
void?Destory_queue(pmyqueue?qu)
{
?pqdode?p=qu->front,q=NULL;
?while?(p)
?{
q?=?p->next; delete?p;?p?=?q;
?}
?p?=?NULL;
}
void?Put_queue(pmyqueue?qu,int?val)
{
?qu->rear->n?=?val;
?pqdode?q=qu->rear;
?pqdode?p?=?new?qdode;
?p->next?=?NULL;
?qu->rear?=?p;
q->next?=?p;}
bool?Is_empty(pmyqueue?qu)
{
?if?(qu->front!=qu->rear)
?{
?return?false;
?}
?else
?{
?return?true;
?}
}
int?Travel_queue(pmyqueue?qu)
{
int?count=0;
if?(Is_empty(qu))
{
cout<<"該隊列為空!"<<endl;
return?0;
}
else
{
pqdode?p=qu->front,q=NULL;
while?(p!=qu->rear)
{
count++;
cout<<p->n<<"";
if?(!(count%5))
{
cout<<endl;
}
p?=?p->next;
}
return?count;
}
}
int?Out_queue(pmyqueue?qu)
{
if?(Is_empty(qu))
{
cout<<"該隊列為空!"<<endl;
return?-1;
}
else
{
int?val=qu->front->n;
pqdode?p?=?qu->front->next;
delete?qu->front;
qu->front?=?p;
return?val;
}
}
然後壹個數組實現的
#include?<iostream>using?namespace?std;
class?QUEUE//隊列類
{
private:?//私有成員
int?*pBase;
int?front,rear;
int?count;
public:?//公有成員
bool?Is_empty();//判斷是否為空
bool?Is_full();//判斷是否滿
void?enter_queue(int?n);//入隊
int?out_queue();//出隊
void?travel_queue();//遍歷隊
QUEUE?(int?number?=?100)
{
front?=?rear?=?0; pBase?=?new?int[number+1];?count?=?number?+?1;
}
~QUEUE()
{
delete?[]?pBase;
}
};
int?main()
{
QUEUE?queue(5);
queue.enter_queue(1);
queue.enter_queue(2);
queue.enter_queue(3);
queue.enter_queue(4);
queue.enter_queue(5);
queue.enter_queue(6);
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
if?(queue.Is_full())
{
cout<<"wangbadan"<<endl;
}
int?n?=?queue.out_queue();
cout<<n<<endl;
queue.travel_queue();
int?n1?=?queue.out_queue();
cout<<n1<<endl;
queue.travel_queue();
return?0;
}
bool?QUEUE::Is_empty()//判斷是否滿
{
if?(front?==?rear) {?return?true;
}?else
?{
?return?false;
?}
}
bool?QUEUE::Is_full()//判斷是否空
{
if?((rear?+?1)?%?count?==?front)
{
return?true;
}
else
{
return?false;
}
}
void?QUEUE::enter_queue(int?n)//入隊
{
?if?(Is_full())
?{
?cout<<"隊列已滿!"<<endl;
?}
?else
?{
?pBase[rear]=n;
?rear?=?(rear?+?1)?%?count;
?}
?return;
}
int?QUEUE::out_queue()//出隊
{
?int?n?=?pBase[front];
if?(Is_empty()) {?cout<<"該隊列已空!"<<endl;
?return?false;
}?else
?{
?front?=?(front?+?1)?%?count;
?return?n;
?}
}
void?QUEUE::travel_queue()//遍歷
{
?int?j=0;
?for?(int?i=front;i?%?count?!=?rear;i++)
?{
?j++;
?cout<<pBase[i%count]<<"?";
?if?(j==5)
?{
cout<<endl;?j=0;
?}
?}
?if?(j)
?{
?cout<<endl;
?}
?return;
}