这个是循环队列的实现,至于串及数组这两章,等有空再看,下面将学习树。

源码如下:

#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 队列的链式表示和实现(循环队列)的更多相关文章

  1. 【数据结构(C语言版)系列二】 栈

    栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...

  2. 【数据结构(C语言版)系列三】 队列

    队列的定义 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开.在队列中,允许插入的一端叫做队尾(rear),允许 ...

  3. 为什么我要放弃javaScript数据结构与算法(第三章)—— 栈

    有两种结构类似于数组,但在添加和删除元素时更加可控,它们就是栈和队列. 第三章 栈 栈数据结构 栈是一种遵循后进先出(LIFO)原则的有序集合.新添加的或待删除的元素都保存在栈的同一端,称为栈顶,另一 ...

  4. 数据结构与算法分析——C语言描述 第三章的单链表

    数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...

  5. 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

    <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛  ...

  6. c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...

  7. 数据结构(c语言版)文摘

    第一章  绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...

  8. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  9. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  10. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

随机推荐

  1. UVa 11210 (DFS) Chinese Mahjong

    大白书第一章的例题,当时看起来很吃力,现如今A这道题的话怎么写都无所谓了. 思路很简单,就是枚举胡哪张牌,然后枚举一下将牌,剩下如果能找到4个顺子或者刻子就胡了. 由于粗心,34个字符串初始化写错,各 ...

  2. POJ 1456 (贪心+并查集) Supermarket

    有n件商品,每件商品有它的利润和售出的最后期限,问能够得到的最大利润是多少 这道题和 HDU 1789 Doing Homework again 几乎一模一样,只不过这个是求最的扣分,本题是求最大利润 ...

  3. UVALive 3415 Guardian of Decency(二分图的最大独立集)

    题意:老师在选择一些学生做活动时,为避免学生发生暧昧关系,就提出了四个要求.在他眼中,只要任意两个人符合这四个要求之一,就不可能发生暧昧.现在给出n个学生关于这四个要求的信息,求老师可以挑选出的最大学 ...

  4. 内核打上yaffs2补丁遇到的问题

    移植yaffs2文件系统时,首先要在内核中添加对yaffs2的支持,使用命令:./patch-ker.sh c 内核目录时,出现下面错误: usage:  ./patch-ker.sh  c/l m/ ...

  5. ORACLE RAC集群硬件资源管理与单节点的区别

    硬件资源是由OS kernel管理的,应用软件是不能直接访问硬件的,必须通过OS kernel提供的API接口间接访问,OS kernel 除了要完成用户的请求,还通过进程调度等机制来控制多进程对资源 ...

  6. PHP校验ISBN码的函数

    国际标准书号(International Standard Book Number,ISBN:拟发音is-ben),是国际通用的图书或独立的出版物(除定期出版的期刊)代码.出版社可以通过国际标准书号清 ...

  7. linux下动态库编译的依赖问题

    这里主要是想试验一下,对一个具有多层嵌套的动态库进行编译时,是否要把最底层的库也包含进来的问题,结论是:只要直接依赖的库名称,不需要最底层库名称. 一,目录结构ZZZ├── add│   ├── ad ...

  8. DataGridView固定了列名,怎样将数据内容绑定在列上

    留心驿站 原文 其实很简单,在DataGridView上右键选择编辑列,在数据一项中找到DataPropertyName,在里面写上对应的要绑定的数据中的字段名,即可 .比如:从数据库中选择的data ...

  9. Hbase shell详情

    HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”.HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建.删 ...

  10. JavaScript/jQuery 表单美化插件小结

    Niceforms Niceforms是一款独立的表单美化工具,当前版本为2.0 官方主页:http://www.emblematiq.com/lab/niceforms/ 官方演示:http://w ...