C语言数据结构队列
2018-03-29 18:17
405 查看
#include<stdio.h>
#include<stdlib.h>
struct Node {
int data;
Node *next;
};
struct Queue {
Node* head;
Node* 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;
}
void output(Queue *Q) {
int data;
if (Q->head == Q->rear) {
printf("队列下溢!");
}
Node *node = Q->head->next;
data = node->data;
Q->head->next = node->next;
if (node->next == NULL) {
Q->rear = Q->head;
}
free(node);
}
void printQueue(Queue *Q) {
Node *node = Q->head->next;
puts("队列成员如下\n\n");
while (node != NULL) {
printf("%d\n", 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);
}
int main(int argc,char** argv) {
int select,d;
Queue *Q = creatQueue();
while (1)
{
puts("1,入队\n2,出队\n3,遍历\n0,退出\n\n请输入操作号:");
scanf("%d", &select);
switch (select)
{
case 1:
puts("请输入需要入队的数字:");
scanf("%d", &d);
enQueue(Q, d);
break;
case 2:
output(Q);
break;
case 3:
printQueue(Q);
break;
case 0:
printf("程序已退出\n");
exit(1);
break;
default:
puts("输入错误!\n");
break;
}
}
destroyQueue(Q);
}
#include<stdlib.h>
struct Node {
int data;
Node *next;
};
struct Queue {
Node* head;
Node* 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;
}
void output(Queue *Q) {
int data;
if (Q->head == Q->rear) {
printf("队列下溢!");
}
Node *node = Q->head->next;
data = node->data;
Q->head->next = node->next;
if (node->next == NULL) {
Q->rear = Q->head;
}
free(node);
}
void printQueue(Queue *Q) {
Node *node = Q->head->next;
puts("队列成员如下\n\n");
while (node != NULL) {
printf("%d\n", 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);
}
int main(int argc,char** argv) {
int select,d;
Queue *Q = creatQueue();
while (1)
{
puts("1,入队\n2,出队\n3,遍历\n0,退出\n\n请输入操作号:");
scanf("%d", &select);
switch (select)
{
case 1:
puts("请输入需要入队的数字:");
scanf("%d", &d);
enQueue(Q, d);
break;
case 2:
output(Q);
break;
case 3:
printQueue(Q);
break;
case 0:
printf("程序已退出\n");
exit(1);
break;
default:
puts("输入错误!\n");
break;
}
}
destroyQueue(Q);
}
相关文章推荐
- C语言数据结构——队列
- C语言数据结构之栈与队列的应用(1)进制转换
- 数据结构之带优先级的队列(C语言实现)
- C语言数据结构-4.队列的顺序及链式存储结构
- 手工数据结构系列-C语言模拟队列 hdu1276
- 数据结构学习笔记-队列的链式存储(C语言实现)
- 循环队列–C语言实现–数据结构
- 数据结构:循环队列(C语言实现)
- 数据结构_4:队列:C语言
- 【数据结构】之队列(C语言描述)
- 数据结构中栈与队列的c语言代码实现
- C语言数据结构之队列
- 数据结构.队列(C语言实现)
- C语言数据结构之栈与队列的应用(2)
- C语言数据结构练习——停车场管理系统(使用栈和队列)(草稿的草稿)
- 数据结构C语言实现之链式队列的6种算法代码
- C语言数据结构-顺序队列-数组实现
- c语言数据结构应用-数组队列(无锁队列)在多线程中的使用
- C语言数据结构之队列篇
- C语言实现数据结构之队列