永发信息网

求C语言实现链队列的建立和出入队列

答案:1  悬赏:20  手机版
解决时间 2021-04-07 15:51
求C语言实现链队列的建立和出入队列
最佳答案

#include
#include

struct Node {
int data; // 数据类型自己根据需要定义
Node *next;
};

struct Queue {
Node *head, *rear;
};

Queue* creatQueue() {
Queue *Q = new Queue;
Node *node = (Node*) malloc(sizeof(Node)); // 创建头节点
node->next = NULL;
Q->head = Q->rear = node;
return Q;
}

void enQueue(Queue *Q, int d) {
Node *node = (Node*) malloc(sizeof(Node));
node->data = d;
node->next = NULL;
Q->rear->next = node;
Q->rear = node;
}

int deQueue(Queue *Q) {
int data;
if (Q->head==Q->rear) {
printf("队列下溢!");
return 99999999; // 表示错误
}
Node *node = Q->head->next;
data = node->data;
Q->head->next = node->next;
if(node->next==NULL) {
Q->rear = Q->head;
}
free(node);
return data;
}

void printQueue(Queue *Q) {
Node *node = Q->head->next;
puts("Queue: ");
while(node!=NULL) {
printf("%d ", node->data);
node = node->next;
}
putchar('
');
}

void destroyQueue(Queue *Q) { // 回收内存
Node *node;
while(Q->head) {
node = Q->head->next;
free(Q->head);
Q->head = node;
}
free(Q);
}

void main() {
int d, run = 1;
Queue *Q = creatQueue();
while(run) {
system("cls");
printQueue(Q);
puts("1、入队
2、出队
3、退出
请输入操作号:");
scanf("%d", &d);
switch(d) {
case 1:
puts("请输入需要入队的数字:");
scanf("%d", &d);
enQueue(Q, d);
break;
case 2:
printf("%d 出队
", deQueue(Q));
break;
case 3:
run = 0;
break;
default:
puts("输入错误!
");
}
system("pause");
}
destroyQueue(Q);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
核物理 与 核技术 是不是一回事?想学核动力
如何把自己的名字介绍得幽默,我的名字叫李琼
32+62=30只移动一根火柴使等式成立
祝福好支家庭幸福,事业成功的经典句子
A大调的主和弦是什么,以什么为DO。还有,钢
三菱plc怎样在程序控制台达温控DTC1000?
网络游戏有秘籍吗?
六年(1)班共有46人去野炊,老师说分成12个
吾未见其明也的其字与也字是什么意思
兰州鑫源聚商贸有限公司地址在什么地方,想过
装电信网线的时候,绑定的有电信手机号,还有
在很多电影和纪录片里,霸王龙动不动就会被绊
本人办理了贷款,贷款期限填了10年,但我如果
谁用过录屏工具啊 为什么我录得只有声音没有
单选题下图体现南诏建筑艺术最高水平的建筑是
推荐资讯
03年的本田雅阁防盗器自动叫,怎么回事?
computer用英语怎么说
那个腹黑嫡女 你抄袭你家里知道吗,?
医院判定精神分裂单位可以因此辞退吗
法律快车
转账支票的抬头写错,支票又已经被转账,该怎么
狗狗脖子处皮肤皱裂还有黄色的结痂还掉毛,掉
本人事业编制,试用期未过,请问能否报考国家
来尔康大药房大南店我想知道这个在什么地方
b字母开头的是哪个首饰品牌的名字
藏獒七八十斤伊维菌素注射液打多少合适
【有机化学】写构造式有什么技巧吗,如图
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?