#include <iostream>
using namespace std;
typedef struct Qnode
{
Qnode *next;
int data;
}Qnode,*Queueptr;
struct Queue
{
Queueptr front;
Queueptr rear;
};
//初始化队列
bool InitQueue(Queue &queue)
{
Queueptr p;
p=new Qnode;
queue.front=queue.rear=p;
if (!queue.front)
{
cout<<"内存分配失败!"<<endl;
return false;
}
queue.front->next=NULL;
return true;
}
//队列插入元素
bool Enqueue(Queue &queue,int value)
{
Queueptr p=new Qnode;
if (!p)
{
cout<<"内存分配失败!"<<endl;
return false;
}
p->next=NULL;
p->data=value;
queue.rear->next=p;
queue.rear=p;
return true;
}
//从头开始获取队列元素
void GetQueueValue(Queue &queue)
{
Queueptr p=queue.front->next;
while (p)
{
cout<<p->data<<" ";
p=p->next;
}
}
//删除队列元素
bool DeleteQueue(Queue &queue)
{
if (queue.front==queue.rear)
{
cout<<"队列为空,无法删除!"<<endl;
return false;
}
Queueptr p=queue.front->next;
queue.front->next=p->next;
if(queue.rear==p) //队列只有一个元素的情况
queue.rear=queue.front;
return true;
}
void main()
{
Queue q;
InitQueue(q);
for (int i=0;i<10;i++)
{
Enqueue(q,i*10);
}
GetQueueValue(q);
DeleteQueue(q);
cout<<endl;
GetQueueValue(q);
}
队列的基本应用
最新推荐文章于 2020-08-02 20:10:33 发布