数据结构C语言版-队列
#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; typedef int QElemType; typedef struct QNode { QElemType data; struct QNode *next; } QNode, *QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; } LinkQueue; bool InitQueue(LinkQueue &Q); bool DestoryQueue(LinkQueue &Q); bool ClearQueue(LinkQueue &Q); bool QueueEmpty(LinkQueue Q); int QueueLength(LinkQueue Q); int GetHead(LinkQueue Q); bool EnQueue(LinkQueue &Q, QElemType e); bool DeQueue(LinkQueue &Q, QElemType &e); void QueueTraverse(LinkQueue Q); //Q.front里面是没有数据的 //Q.rear里面是有数据的 int main() { LinkQueue s; InitQueue(s); EnQueue(s, 5); EnQueue(s, 6); EnQueue(s, 7); ClearQueue(s); EnQueue(s, 8); EnQueue(s, 100); cout << QueueLength(s) << endl; int a; DeQueue(s, a); cout << a << endl; if (QueueEmpty(s)) { cout << 'a' << endl; } cout << GetHead(s) << endl; } void QueueTraverse(LinkQueue Q) { if (Q.front == Q.rear) { return; } QueuePtr tmp = Q.front->next; while (tmp != Q.rear) { printf("%d ", tmp->data); tmp = tmp->next; } printf("%d\n", tmp->data); } int GetHead(LinkQueue Q) { return Q.front->next->data; } bool QueueEmpty(LinkQueue Q) { if (Q.front == Q.rear) { return true; } return false; } int QueueLength(LinkQueue Q) { int length = 0; LinkQueue tmp = Q; while (tmp.front) { length++; tmp.front = tmp.front->next; } return length - 1; } bool InitQueue(LinkQueue &Q) { Q.front = Q.rear = (QNode *) malloc(sizeof(QNode)); if (!Q.front) { exit(EOVERFLOW); } Q.front->next = NULL; return true; } bool ClearQueue(LinkQueue &Q) { QueuePtr tmp = Q.front->next; while (tmp) { QueuePtr tp = tmp; tmp = tmp->next; free(tp); } Q.rear = Q.front; Q.front->next = NULL; } bool DestoryQueue(LinkQueue &Q) { while (Q.front) { Q.rear = Q.front->next; free(Q.front); Q.front = Q.rear; } return true; } bool EnQueue(LinkQueue &Q, QElemType e) { QueuePtr p = (QueuePtr) malloc(sizeof(QNode)); if (!p) { exit(EOVERFLOW); } p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return true; } bool DeQueue(LinkQueue &Q, QElemType &e) { if (Q.front == Q.rear) { return false; } QueuePtr p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear == p) { Q.rear = Q.front; } free(p); return true; }
数据结构C语言版-队列的更多相关文章
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- 【数据结构(C语言版)系列三】 队列
队列的定义 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开.在队列中,允许插入的一端叫做队尾(rear),允许 ...
- 深入浅出数据结构C语言版(7)——特殊的表:队列与栈
从深入浅出数据结构(4)到(6),我们分别讨论了什么是表.什么是链表.为什么用链表以及如何用数组模拟链表(游标数组),而现在,我们要进入到对线性表(特意加了"线性"二字是因为存在多 ...
- 【数据结构(C语言版)系列二】 栈
栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...
- 深入浅出数据结构C语言版(5)——链表的操作
上一次我们从什么是表一直讲到了链表该怎么实现的想法上:http://www.cnblogs.com/mm93/p/6574912.html 而这一次我们就要实现所说的承诺,即实现链表应有的操作(至于游 ...
随机推荐
- PHP5.5.38版本Zend Guard loader for 5.5安装(详细)
第一次在博客园写东西记录自己,不,可以说第一次在网上写东西记录自己,我只是个菜鸟,具体的不太懂, 但是作为一个菜鸟我肯定把我遇到的问题给详细的表述出来,大神勿喷.在安装Zend Guard loade ...
- 关于创建String对象过程的内存分配
String是引用数据类型 但是String实际上java给我们提供的是一个类 注意:String 全类被fianl所修饰 所以 String 又叫 字符串常量 String 的值 一旦定义 不可以改 ...
- python的django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- jquery取出checkbox多选的值(带全选功能)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- systemd 编写服务管理脚本---学习
转载:https://www.cnblogs.com/sparkdev/p/8521812.html 我们运行 linux 服务器的主要目的是通过运行程序提供服务,比如 mysql.web serve ...
- CMakeLists 的使用,大型工程使用cmake 的构件过程
CMakeLists 的使用,大型工程使用cmake 的构件过程 CMakeLists_1 PROJECT(hello_2) cmake_minimum_required(VERSION 2.8) # ...
- php使用redis的GEO地理信息类型
redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作. <?php $redis = new Redis(); $redi ...
- 32. pt-visual-explain
mysql -e "explain select name from db01.t01 where code>1" |pt-visual-explain echo " ...
- EasyPR源码剖析(7):车牌判断之SVM
前面的文章中我们主要介绍了车牌定位的相关技术,但是定位出来的相关区域可能并非是真实的车牌区域,EasyPR通过SVM支持向量机,一种机器学习算法来判定截取的图块是否是真的“车牌”,本节主要对相关的技术 ...
- 某app的安全性分析过程
交互过程如下,可以发现问题很多 http://www.ixxxx.com//api/index/app图片验证码:{"data":{"imgCode":&quo ...