#include <stdio.h>
#include <stdlib.h>
typedef int QElemType;
typedef struct QNode
{
struct QNode *next;
QElemType data;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue &q)
{
q.front=q.rear=new QNode;
q.front->next=NULL;
return 1;
}
int PushQueue(LinkQueue &q,QElemType x)
{
QNode *p=new QNode;
p->data=x;
p->next=NULL;
q.rear->next=p;
q.rear=p;
return 1;
}
int PopQueue(LinkQueue &q,QElemType &x)
{
if(q.front==q.rear) return 0;
QueuePtr p;
p=q.front->next;
x=p->data;
q.front->next=p->next;
if(q.rear==p) q.rear=q.front;
free(p);
return 1;
}
int GetHead(LinkQueue q)
{
if(q.front!=q.rear)
return q.front->next->data;
}
int main()
{
QElemType x;
int n;
LinkQueue q;
InitQueue(q);
printf("请输入入队元素个数\n");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
printf("请输入第%d个元素值", i + 1);
scanf("%d", &x);
if (PushQueue(q, x))
printf("入队成功\n");
else printf("入队失败\n");
}
printf("\n对头元素是:%d\n",GetHead(q));
printf("出队遍历\n");
while(q.front!=q.rear)
{
PopQueue(q,x);
printf("%d ",x);
}
return 0;
}
/*
1 2 3 0
*/
2.4链队的基本操作
于 2023-08-16 16:38:10 首次发布