#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 2 // 定义队列的最大长度为2
typedef struct Statck {
char name[20]; // 定义结构体,存储姓名
int age; // 定义结构体,存储年龄
}data;
typedef struct Sta {
struct Statck st[MAX]; // 定义结构体,存储结构体数组st
int front, rear; // 定义队列的头指针和尾指针
}St;
// 创建队列函数
St* CreateQueue()
{
St* s;
s = (St*)malloc(sizeof(St)); // 动态分配内存空间
s->front = s->rear = 0; // 初始化头尾指针为0
return s;
}
// 入队操作函数
void PushQueue(St* pHead, data num)
{
if ((pHead->rear + 1) % MAX == pHead->front) // 判断队列是否已满
{
printf("队列已满\n");
return;
}
else{
pHead->st[(pHead->rear)%MAX] = num; // 将数据存入队列尾部
pHead->rear=((++pHead->rear)%MAX); // 更新尾指针
printf("%s\t%d入队列!\n", num.name,num.age); // 输出入队信息
}
}
// 出队操作函数
void PopStack(St* pHead)
{
if (pHead->rear == pHead->front) // 判断队列是否为空
{
printf("队列空\n");
return;
}
else {
printf("%s\t%d出队列!\n", pHead->st[pHead->front].name,pHead->st[pHead->front].age); // 输出出队信息
pHead->front=((++pHead->front) % MAX); // 更新头指针
}
return;
}
int main()
{
St* t = CreateQueue(); // 创建队列
for (int i = 0; i < 5; i++) // 循环5次入队和出队操作
{
data s{}; // 定义结构体变量s
scanf("%s%d", s.name, &s.age); // 输入姓名和年龄
PushQueue(t, s); // 入队操作
PopStack(t); // 出队操作
}
return 0;
}
写顺序队列,实现入队出队
最新推荐文章于 2024-11-06 19:08:09 发布