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

要C语言的,最好简单基础点,我是编程苦手最好能输入数字的... 要C语言的,最好简单基础点,我是编程苦手
最好能输入数字的
展开
 我来答
jkla139
2013-11-23 · TA获得超过619个赞
知道小有建树答主
回答量:347
采纳率:100%
帮助的人:248万
展开全部

#include<stdio.h>
#include<stdlib.h>

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);
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式