#include<stdio.h>
#include<malloc.h>
//创建链式存储的队列
typedef struct node
{
int data;
node* next;
}Link,*Plink;
typedef struct
{
Plink front;//头指针
Plink rear;//尾指针
}Linkque;
int InitQue(Linkque& L)
{
Link* p = (Link*)malloc(sizeof(Link));
if (!p)
{
printf("创建队列失败\n");
return -1;
}
p->next = NULL;
L.front = L.rear = p;//创建一个空结点
return 0;
}
int Enqueue(Linkque& L)
{
printf("请输入你想入队的值\n");
int a;
scanf_s("%d", &a);
Link* p = (Link*)malloc(sizeof(Link));
if (!p)
{
printf("创建队列失败\n");
return -1;
}
p->data = a;
p->next = NULL;
L.rear->next = p;//对链表进行操作
L.rear = p;//将尾指针指向最后一位元素
return 0;
}
int Delqueue(Linkque& L)
{
if (L.front == L.rear)
{
printf("队空\n");
return -1;
}
Link* p = L.front->next;//跳过空结点
int a = p->data;
printf("出队元素是:%d\n", a);
L.front->next = p->next; //将头指针向下移一位
if (L.rear == p)//保持空结点不变
{
L.rear = L.front;
}
return 0;
}
int Getelem(Linkque& L)
{
int a = L.front->next->data;
printf("队头元素是:%d", a);
return a;
}
int main()
{
Linkque L;
InitQue(L);
Enqueue(L);
Delqueue(L);
Getelem(L);
return 0;
}
c语言实现队列的链式存储
最新推荐文章于 2024-07-20 09:51:47 发布