前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项。文中涉及的代码运行环境如下: 本文假定读者已具备线程同步的基础知识。一 顺序表循环队列1.1 顺序循环队列定义 队列是一种运算受限的先进先出线性表,仅允许在队尾插入(入队),在队首删除(出队)...
分类:
编程语言 时间:
2014-10-16 19:22:33
阅读次数:
428
利用线性表实现队列,为了有效利用空间,将其设计为循环结构,防止假溢出;牺牲一个存储单元以区分队空、队满。
设front队头,rear队尾,N为顺序表大小
队空:rear==front
队满:(rear+1)%N==front
#include
#define Elemtype int
#define N 100
struct Queue
{
Elemtype data[N];
int ...
分类:
其他好文 时间:
2014-10-11 01:38:34
阅读次数:
360
标准队列是一种先进先出的线性结构。
设想一个用数组实现的容量为2的队列,入队2次后出队1次,再入队一次。传统队列会认为rear已指向末尾,入队失败。而循环队列会将新元素放在arr[0]的位置上,允许rear
队空和队满时头尾指针均相等,因此通过元素个数判断更合理。
{CSDN:CODE:478002}...
分类:
其他好文 时间:
2014-09-30 18:14:19
阅读次数:
169
#include#includetypedef int QEleType;typedef int Status;#define OK 1#define ERROR 0#define OVERLOW -2#define TRUE 1#define FALSE 0//#define...
分类:
其他好文 时间:
2014-09-26 23:00:59
阅读次数:
334
#include#includetypedef char QEleType;typedef int Status;#define OK 1#define ERROR 0#define OVERLOW -2#define TRUE 1#define FALSE 0struct qu...
分类:
其他好文 时间:
2014-09-26 22:59:18
阅读次数:
265
循环顺序队列的另一种实现方式,即少用一个存储空间来实现循环顺序队列...
分类:
其他好文 时间:
2014-09-22 01:49:51
阅读次数:
182
为了能充分的利用空间,解决顺序队列的“假溢出”问题,可以采用两种方法:一种是将数据向前移动,让空的存储单元留在队尾;另一种是将顺序队列构造成一个环状的空间,即将队列的数据区data[0....MAXSIZE-1]看成头尾相接的循环结构,使得data[0]接在data[MAXSIZE-1]之后,这就是循环队列。
这节就来实现循环顺序队列。
循环队...
分类:
其他好文 时间:
2014-09-21 18:28:11
阅读次数:
334
和栈相反,队列是一种先进先出的的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的队列是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾,允许删除的一端则稀烂为队头。
顺序队列,即队列的顺序存储结构。由于队列的队头和队尾的位置均发生变化,因此在队列顺序存储结构中,除了用一组地址连续的存储单元依次存放从队头到队尾的元素之外,还需要附设...
分类:
其他好文 时间:
2014-09-21 16:34:50
阅读次数:
297
对于循环队列与链队列的比较,可以从两方面来考虑:纽约娱乐城从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一些时间开销,如果入队出队频繁,则两者还是有细微差异。对于空间上来说,循环队列必须有一个固定的长...
分类:
其他好文 时间:
2014-09-19 15:28:45
阅读次数:
525
队列头指针为front,队列尾指针为rear(指向队尾元素),after_rear为队尾元素的后一位置(按顺时针方向),队列容量为maxsize 如果用 front == rear 来表示队列为空,也就是说front和rear指向同一个位置,那么: 队列满时:(rear+1) mod maxsize...
分类:
其他好文 时间:
2014-09-04 22:07:50
阅读次数:
513