3,881
社区成员
发帖
与我相关
我的任务
分享
/*************************************************************************
> File Name: queue2.c
> Author: Gnglas
> Mail: 2254228017@qq.com
> Created Time: 2020年01月13日 星期一 11时46分58秒
************************************************************************/
/*
1初始化队列
2确定队列为空
3确定队列已满
4确定队列中的项数
5插入队列
6删除队列
7清空队列
8遍历队列
*/
#include<stdio.h>
#include<malloc.h>
typedef struct FIFO
{
int man;// nuber
int Qsize;// sizeof FIFO
struct FIFO* next; // next &
}NewQueue;
// Nuber one 初始化
NewQueue* InitQueue(NewQueue* queue);
// Nuber two 确定是否为空
int JudegQueue(NewQueue* queue);
// Nuber three 确定是否已满
//int FullQueue(NewQueue *queue);
// Nuber four 确定队列中的项数
int TailForNuber(NewQueue* queue);
// Nuber five 插入队列
NewQueue* PushQueue(NewQueue* queue, int nuber);
// Nuber six 删除队列
NewQueue* DelQueue(NewQueue* queue);
// Nuber seven 清空队列
NewQueue* ClearQueue(NewQueue* queue);
// Nuber eight 遍历队列
void ErgoQueue(NewQueue* queue);
int main()
{
int Nuber;
NewQueue* head =NULL, * tail=NULL;
printf(" Nuber one 初始化.........\t");
printf("成功!\n");
for (Nuber = 0; Nuber < 5; Nuber++)
{
tail = InitQueue(tail);
if (head->next = NULL)
head->next = tail;
printf("插入%d......\t", Nuber);
PushQueue(tail, Nuber);
printf("成功!\n");
}
printf("删除头结点.....\t");
DelQueue(head);
printf("成功!\n");
printf("删除了头结点数值 %d\n",head->next->man);
printf("遍历队列....\t");
ErgoQueue(head);
printf("成功!\n");
printf("清空队列.......\t");
head = ClearQueue(head);
printf("成功!\n");
return 0;
}
NewQueue* InitQueue(NewQueue* queue)
{
queue = (NewQueue*)malloc(sizeof(NewQueue));
queue->man = 0;
queue->Qsize = 0;
queue->next = NULL;
return queue;
}
int JudegQueue(NewQueue* queue)
{
if (queue->next == NULL)
{
printf("无人排队!\t 可以休息了....\n");
return 1;
}
else
return 0;
}
int TailForNuber(NewQueue* queue)
{
return queue->Qsize;
}
NewQueue* PushQueue(NewQueue* queue, int nuber)
{
queue->man = nuber;
queue->Qsize++;
queue->next = NULL;
return queue;
}
NewQueue* DelQueue(NewQueue* queue)
{
printf("开始清理!\n");
if (!JudegQueue(queue))
{
NewQueue* net;
net = queue->next;
queue->next = net->next;
free(net);
printf("清理结束!\t");
}
printf("成功!\n");
return queue;
}
NewQueue* ClearQueue(NewQueue* queue)
{
while (!JudegQueue(queue))
{
DelQueue(queue);
}
return queue;
}
void ErgoQueue(NewQueue* queue)
{
NewQueue* head = queue->next;
while (!JudegQueue(queue))
{
printf("第%d位\t 变量为%d\n", head->Qsize, head->man);
head = head->next;
}
}