数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)
这个是循环队列的实现,至于串及数组这两章,等有空再看,下面将学习树。
源码如下:
#include <stdio.h>
#include <stdlib.h> #define MAXQSIZE 8 typedef int QElemType ; typedef struct
{
QElemType *base;
int front;
int rear; }SqQueue; int InitSqQueue(SqQueue *S)
{
S->base = (QElemType *)malloc(sizeof(QElemType)*MAXQSIZE); printf("Init %p\n",S->base);
if(!S->base)
{
exit();
} S->front = S->rear = ; return ;
} int InsertQueue(SqQueue *S, QElemType e)
{
if((S->rear + )%MAXQSIZE == S->front)
{
printf("full e: %d !!!\n",e); int temp = ;
DeleteQueue(S,&temp);
InsertQueue(S,e);
return -;
} *(S->base + S->rear) = e;
printf("insert %p : %d\n",(S->base + S->rear),e); S->rear = (S->rear + )%MAXQSIZE; return ;
} int DeleteQueue(SqQueue *S, QElemType * e)
{
if(S->front == S->rear)
{
return -; } *e = *(S->base + S->front);
printf("del %p : %d\n",(S->base + S->front),*e);
S->front = (S->front + )%MAXQSIZE; return ;
} void PrintQueue(SqQueue *S)
{
int *a = S->base; int front = S->front;
int rear = S->rear; while(front != rear)
{
printf("%d\t",a[front]);
front ++;
} printf("\n"); } void DestoryQueue(SqQueue *S)
{
free(S->base);
} int main(int argc ,char** argv)
{
SqQueue S;
printf("main %p\n",S.base);
InitSqQueue(&S); int i = ;
for(i = ; i < ; i++)
{
InsertQueue(&S,i);
} // PrintQueue(&S); DeleteQueue(&S,&i); // PrintQueue(&S); printf("main %p\n",S.base);
free(S.base);
printf("main %p\n",S.base); //S.base = NULL;
// DestoryQueue(&S);
return ;
}
运行结果如下:
root@ubuntu:/mnt/hgfs/E/Lessons/MyExercise/DS/# ./SqQueue
main 0xe344d5
Init 0x822d008
insert 0x822d008 :
insert 0x822d00c :
insert 0x822d010 :
insert 0x822d014 :
insert 0x822d018 :
insert 0x822d01c :
insert 0x822d020 :
full e: !!!
del 0x822d008 :
insert 0x822d024 :
full e: !!!
del 0x822d00c :
insert 0x822d008 :
full e: !!!
del 0x822d010 :
insert 0x822d00c :
full e: !!!
del 0x822d014 :
insert 0x822d010 :
full e: !!!
del 0x822d018 :
insert 0x822d014 :
full e: !!!
del 0x822d01c :
insert 0x822d018 :
full e: !!!
del 0x822d020 :
insert 0x822d01c :
full e: !!!
del 0x822d024 :
insert 0x822d020 :
full e: !!!
del 0x822d008 :
insert 0x822d024 :
full e: !!!
del 0x822d00c :
insert 0x822d008 :
full e: !!!
del 0x822d010 :
insert 0x822d00c :
full e: !!!
del 0x822d014 :
insert 0x822d010 :
full e: !!!
del 0x822d018 :
insert 0x822d014 :
del 0x822d01c :
main 0x822d008
main 0x822d008
root@ubuntu:/mnt/hgfs/E/Lessons/MyExercise/DS/#
数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)的更多相关文章
- 【数据结构(C语言版)系列二】 栈
栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...
- 【数据结构(C语言版)系列三】 队列
队列的定义 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开.在队列中,允许插入的一端叫做队尾(rear),允许 ...
- 为什么我要放弃javaScript数据结构与算法(第三章)—— 栈
有两种结构类似于数组,但在添加和删除元素时更加可控,它们就是栈和队列. 第三章 栈 栈数据结构 栈是一种遵循后进先出(LIFO)原则的有序集合.新添加的或待删除的元素都保存在栈的同一端,称为栈顶,另一 ...
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 数据结构(c语言版)文摘
第一章 绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
随机推荐
- JSON 之 SuperObject(6): 方法
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...
- nginx fastcgi php-fpm的关系梳理
CGI(Common Gateway Interface)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具 ...
- NPOI导出Excel表功能实现(多个工作簿)(备用)
Excel生成操作类: 代码 using System; using System.Collections.Generic; using System.Text; using System.IO; u ...
- HTML的列表标签
一.上下层列表标签:<dl>..</dl>: 上层dt 下层dd:封装的内容会被自动缩进的效果 <dl> <dt>运动户外</dt> < ...
- Linux多线程(二)(线程等待,退出)
1. 线程的等待退出 1.1. 等待线程退出 线程从入口点函数自然返回,或者主动调用pthread_exit()函数,都可以让线程正常终止 线程从入口点函数自然返回时,函数返回值可以被其它线程用pth ...
- R语言中strptime返回值永远为NA的问题
调用前加上以下代码,即可解决 Sys.setlocale("LC_TIME", "C");
- 移动WebApp开发框架(珍藏)
1.Jquery Mobilehttp://demos.jquerymobile.com/1.4.5/button-markup/http://andymatthews.net/code/jQuer ...
- HDU 1907 (博弈) John
参见上一篇博客,里面有分析和结论. #include <cstdio> int main() { int T; scanf("%d", &T); while(T ...
- wdcp v3 Forbidden :You don't have permission to access /phpmyadmin on this server
First edit the file /www/wdlinux/apache/conf/vhost/00000.default.conf and add the additional line to ...
- Mysql管理工具SQLyog
SQLyog_Enterprise 用户名:yunjian 注册码:81f43d3dd20872b6 http://download.csdn.net/detail/shel_lee/585361 ...