中易网

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

答案:1  悬赏:60  
解决时间 2021-02-26 21: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('\n');
}

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、入队\n2、出队\n3、退出\n请输入操作号:");
scanf("%d", &d);
switch(d) {
case 1:
puts("请输入需要入队的数字:");
scanf("%d", &d);
enQueue(Q, d);
break;
case 2:
printf("%d 出队\n", deQueue(Q));
break;
case 3:
run = 0;
break;
default:
puts("输入错误!\n");
}
system("pause");
}
destroyQueue(Q);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何分辨一个女孩子是不是处
南园网咖怎么去啊,有知道地址的么
求助e3 1230 v2用什么电源和主板
一个长方体至少( )条棱长度相等,最多有(
kattun- phoenix的中文歌词文件下载!!!
禾田秋色餐厅在哪里啊,我有事要去这个地方
名门盛典婚庆礼仪地址有知道的么?有点事想过
风水之为什么有的女人在睡觉时敏感度高
日语!为什么门锁着要用かぎがかかっている?
小额贷款公司:实习都做什么?
野兔吃豆苗怎么办
深圳市公安局公交分局公交反扒四大队这个地址
68V电动车上面的照明灯和转向灯用的是多少伏
新疆戈壁彩玉现在的行情怎样?
机床进刀中的“进给”中的“给”读作gei还是j
推荐资讯
贷款不是自己签字贷的,要还吗?
Kirkland Mature Multi 是咀嚼片还是含片
怎么才可以预约到厦门儿科专家高树彬医生的号
大腿两侧有肥伴纹怎样去除
我安装了一台2500W的电动机。就是不知道要安
林州市陵阳镇西贤城学校怎么去啊,有知道地址
用歌词查找歌曲 有一首歌 应该是英文的 我记
中国人民从此站起来了用了什么修辞手法
天缘婚纱摄影地址有知道的么?有点事想过去
那个品牌及型号的乳胶漆适用于厨房棚顶?
热血精灵派的米米卡
瓷砖零销和家电,家具哪个生意好做
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?