#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);

}

C语言数据结构队列的更多相关文章

  1. C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-队列的实现-C语言 //队列的存储结构 #define MAXSIZE 100 typedef struct { int* base; //基地址 int _front; //头指针 i ...

  2. java 数据结构 队列的实现

    java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...

  3. C++ 泛型 编写的 数据结构 队列

    平时编程里经常需要用到数据结构,比如  栈和队列 等,  为了避免每次用到都需要重新编写的麻烦现将  C++ 编写的 数据结构 队列  记录下来,以备后用. 将 数据结构  队列  用头文件的形式写成 ...

  4. java数据结构——队列、循环队列(Queue)

    每天进步一点点,坚持就是成功. 1.队列 /** * 人无完人,如有bug,还请斧正 * 继续学习Java数据结构————队列(列队) * 队列和栈一样,都是使用数组,但是队列多了一个队头,队头访问数 ...

  5. [从今天开始修炼数据结构]队列、循环队列、PriorityQueue的原理及实现

    [从今天开始修炼数据结构]基本概念 [从今天开始修炼数据结构]线性表及其实现以及实现有Itertor的ArrayList和LinkedList [从今天开始修炼数据结构]栈.斐波那契数列.逆波兰四则运 ...

  6. (js描述的)数据结构[队列结构,优先级队列](3)

    (js描述的)数据结构[队列结构](3) 一.队列结构的特点: 1.基于数组来实现,的一种受限的线性结构. 2.只允许在表头进行删除操作,在表尾进行插入操作. 3.先进先出(FIFO) 二.队列的一些 ...

  7. 数据结构--队列(Java实现)

    数据结构--队列(Java实现) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 队列是一种特殊的线性表,特殊之处在于它只 ...

  8. C语言数据结构-链式队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-链式队列的实现-C语言 typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef st ...

  9. C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...

随机推荐

  1. css 固比固模型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Ubuntu 18 安装 cuda 10

    1.把预先下好的cuda放到某个目录,如Download. 2.Crtl + Alt + F3 进入tty,使用tty登录. 关闭用户图形界面,sudo systemctl set-default m ...

  3. vue-autoui自匹配webapi的UI控件

    vue-autoui 是一款基于vue和element扩展的一个自动化UI控件,它主要提供两个控件封装分别是auto-form和auto-grid; 通过这两个控件可以完成大多数的信息输入和查询输出的 ...

  4. JDK14发布了,快来看看有什么新特性吧

    序言

  5. Python 之 copy() 与 deepcopy() 之间的区别

    在 Python 之中,如果想要复制一个对象就免不了要理解浅复制与深复制.这也是 Python 与其他语言的区别之一. Python 的数据存储方式与其他语言不同.当你定义了一个变量: a = [, ...

  6. 《JavaScript 模式》读书笔记(3)— 字面量和构造函数1

    新的篇章开始了,本章开始,所有的内容都是十分有价值和意义的.本章主要的内容包括对象字面量.构造函数.数组字面量.正则字面量.基本值类型字面量以及JSON等.在大家的工作和实际应用中也有一定的指导意义. ...

  7. Fiddler2 下断点修改HTTP报文

    一 Fiddler中设置断点修改HTTP请求 方法1:全局断点.Rules-->Automatic BreakPoint-->Before Requests(或快捷键F11),这种方法会拦 ...

  8. Spring Boot + LayUI 批量修改数据 数据包含着对象

    页面展示 HTML 代码 <blockquote class="layui-elem-quote demoTable"> <div class="lay ...

  9. sleep()和wait()方法的区别

    1,sleep()声明在Thread类中,而且是静态方法: wait()声明在Object类中,而且必须由锁对象调用. 2,sleep()时间达到后恢复: wait()可以设置事件自动恢复,如果没有设 ...

  10. SpringBoot(二) SpringBoot核心配置文件application.yml/properties

    我们都知道在Spring中有着application.xml文件对Spring进行相关配置,通过web.xml中的contextConfigLocation指定application.xml文件所在位 ...