#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Qnode; //定义节点;
typedef struct Qnode
{
Qnode*front;
Qnode*rear;
}Queue; //定义首尾指针
//初始化
void Init(Queue*q)
{
q->front=NULL;
q->rear=NULL;
}
//判断队列是否已满
int Isempty(Queue*q)
{
return q->front==NULL;
}
//入队列
void InQueue(Queue*q,int X)
{
Qnode*newnode=(Qnode*)malloc(sizeof(Qnode));
newnode->data=X;
newnode->next=NULL;
if(q->rear==NULL)
{
q->front=newnode;
q->rear=newnode; //判断队列是否为空,如果是则将新建立的节点直接放在首尾指针的后面,否则执行下一步
}
q->rear->next=newnode;
q->rear=newnode; //此处也可以写成q->rear=q->rear->next;意为着将q->rear后移一位;
}
// 出队列
int OutQueue(Queue*q)
{
if(Isempty(q))
{
printf("队列已空!\n");
}
int X=q->front->data;
Qnode temp=q->front; //定义一个节点代替当前节点
q->front=q->front->next; //当前节点后移一位
free(temp); //释放当前结点
return X; //返回当前结点的值
}
void PrintQueue(Queue*q)
{
if(Isempty(q))
printf("队列已空!\n");
while(q->front!=NULL)
{
printf("%d ",q->front->data); //当当前位置的指针不指向空结点时输出当前节点的数据
q->front=q->front->next; //当前位置的指针后移
}
}
int main()
{
Queue q;
Init(&q);
InQueue(&q,10);
InQueue(&q,20);
InQueue(&q,30);
OutQueue(&q);
PrintQueue(&q);
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:725 |
点我有惊喜!你懂得!浏览:1705 |
母牛的故事 (C语言代码)浏览:712 |
钟神赛车 (C语言代码)浏览:911 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:717 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:701 |
Tom数 (C++代码)浏览:869 |
本人酷爱递归实现很多问题,这里也是浏览:634 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:539 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |