#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode,*QueueNode;
typedef struct{
QueueNode front;//队头指针
QueueNode rear;//队尾指针
}LinkQueue;
//初始化
int InitQueue(LinkQueue &Q){
Q.front=new QNode;
if(Q.front==NULL)
{
return 0;
}
Q.front->next=NULL;
Q.rear=Q.front;
printf("初始化队列成功!\n");
return 1;
}
//入队
int EnQueue(LinkQueue &Q,ElemType x){
QueueNode s=new QNode;
if(s==NULL){
return 0;
}
s->data=x;
s->next=NULL;
Q.rear->next=s;
Q.rear=s;
return 1;
}
//多个元素入队
int MEnQueue(LinkQueue &Q){
printf("你想几个元素入队:");
int n;
ElemType x;
scanf("%d",&n);
printf("请依次输入入队元素:");
for(int i=1; i<=n; i++)
{
scanf("%d",&x);
EnQueue(Q,x);
}
return 1;
}
//出队
int DeQueue(LinkQueue &Q,ElemType &x){
QueueNode p;
if(Q.front==Q.rear){
return 0;//队列空
}
p=Q.front->next;
x=p->data;
Q.front->next=p->next;
if(Q.rear==p){
Q.rear=Q.front;
}
delete p;
printf("出队成功!\n");
printf("出队的元素为:%d\n",x);
return 1;
}
//打印队列
void Print(LinkQueue Q)
{
printf("队列值为:");
QueueNode p = Q.front;
while (p->next != NULL)
{
printf("%d ",p->next->data);
p = p->next;
}
printf("\n");
}
int main(){
LinkQueue Q;
InitQueue(Q);
ElemType x;
printf("你想几个元素入队:");
int n;
scanf("%d",&n);
printf("请依次输入入队元素:");
for(int i=1; i<=n; i++)
{
scanf("%d",&x);
EnQueue(Q,x);
}
Print(Q);
printf("-------------------\n");
ElemType d;
DeQueue(Q,d);
Print(Q);
printf("-------------------\n");
MEnQueue(Q);
Print(Q);
printf("-------------------\n");
DeQueue(Q,d);
Print(Q);
}
队列的链式表示
最新推荐文章于 2024-09-16 17:46:36 发布