<img src="https://img-blog.csdn.net/20141024133953578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDc5NTc2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />/***链队的基本操作***/
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int QElemType;
typedef int Status;
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//初始化
Status InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=new QNode;
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
return OK;
}
//入队
Status EnQueue(LinkQueue &Q,QElemType e)//插入e为Q新的队尾元素
{ QNode *p;
p=new QNode;
if(!p) exit(OVERFLOW);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;;
}
//出队
Status DeQueue(LinkQueue &Q,QElemType &e)
{ QNode *p;
if(Q.front==Q.rear) return ERROR;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.rear=Q.front;//最后一个元素被删,队尾指针指向头结点
delete p;
return OK;
}
int main()
{
LinkQueue Q;
QElemType e;
cout<<"进链队的元素依次为:"<<endl;
if(InitQueue(Q)==OK)
for(int j=1;j<=12;j++)
{
EnQueue(Q,j);
cout<<j<<" ";
}
cout<<endl<<"依次出链队的元素为:"<<endl;
while(DeQueue(Q,e) == OK)
{
cout<<e<<" ";
}
cout<<endl;
return 0;
}
链队的基本操作
最新推荐文章于 2022-03-27 21:32:27 发布