队列的操作
来源:互联网 发布:淘宝礼券 编辑:程序博客网 时间:2024/06/04 00:48
标题:队列的多种C语言实现
内容:队列是先进先出(FIFO)的线性表,C语言中可以使用数组、全局变量、引用实现队列。
作者:MilkCu
概念
队列的操作
队列是受限制的线性表,只允许在队尾(tail)插入、对头(head)删除。
队列的操作方式与堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。
队列的属性
以队列q为例。
q.head指向队头元素;
q.tail指向下一个新元素将要插入的位置。
在队列中,位置1紧邻在n的后面形成一个环序。
队列的状态
当q.head = q.tail时,队列为空,
初始时有q.head = q.tail = 1 ;
当q.head = q.tail + 1时,队列是满的 。
数组实现
利用数组q.key[n]实现一个最多容纳n-1个元素的队列。
# include
# define M 100
typedef struct queue {
} queue;
queue q;
void enqueue(int x);
int dequeue(void);
int main(void)
{
}
void enqueue(int x)
{
}
int dequeue(void)
{
}
全局变量实现
全局变量也挺方便的,只是注意不要和局部变量重名而被取代了。
# include
# define M 100
typedef struct queue {
} queue;
void enqueue(queue * qp, int x);
int dequeue(queue * qp);
int main(void)
{
}
void enqueue(queue * pq, int x)
{
}
int dequeue(queue * pq)
{
}
引用传参实现
引用是C++的特性,在一些数据结构的表示中也是挺方便的,只可惜C语言没有,可能被指针代替了吧。
# include
# define M 100
typedef struct queue {
} queue;
void enqueue(queue & q, int x);
int dequeue(queue & q);
int main(void)
{
}
void enqueue(queue & q, int x)
{
}
int dequeue(queue & q)
{
}
上面的程序中,main函数为测试函数,且均省略了对上溢和下溢的检验!
- 循环队列的操作
- 队列的操作
- 链队列的操作
- 队列的简单操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的相关操作
- 链队列的操作
- 队列的简单操作
- 队列的基本操作!
- E - 队列的操作
- 队列的基本操作
- 队列的相关操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 结构体在内存中的对齐规则
- jni 调用java代码
- opencv滤波专场:线性滤波,方框滤…
- 你一生要知道的74幅世界名画…
- 媒体合成和编辑
- 队列的操作
- C语言中enum类型的用法
- linux的sleep()和usleep()的…
- linux的sleep()和usleep()的…
- cvIntegral—积分图的计算
- 台式电脑将win8换成win7系统的正确操作方法
- Opencv 图像叠加 添加水印
- 有效的产前开奶的按摩方法(…
- 产后一定要喝生化汤吗?