C语言数据结构(7)--队列

简介: 本文目录1. 队列的概念2. 队列的存储3. 队列的操作4. 顺序队列的代码实现

1. 队列的概念

什么是队列,听起来很高端,其实就是最普通的排队。


先排队的,先取票;先排队的,先取餐;先排队的,先上船;先排队的,先上岸。


队列,就是先进先出。


2. 队列的存储

首先队列也是一个一维数据结构,然后添加、和取出元素都是从头部操作即可。可以把队列看做从左到右排列的元素集合,添加元素和取出元素都是在左侧操作。


队列可以使用一位数组或者链表存储,使用数组的称为顺序队列,使用链表的称为链队列。


3. 队列的操作

老三样,遍历、添加、取出。


遍历,按顺序显示所有队列元素

添加,在队列左侧添加一个元素

取出,在队列左侧取出一个元素

4. 顺序队列的代码实现

不多说,都在酒里…sorry,都在代码里:

/*
* 顺序队列实现
* 作者:熊猫大大
* 时间:2019-09-28
*/
#include<stdio.h>
#define QUEUE_LENGTH 100 //队列最大元素个数
// 队列结构体
struct Queue
{
  int element[QUEUE_LENGTH];//队列元素
  int head;//头部位置
  int tail;//尾部位置
};
//遍历
void printQueue(struct Queue* p)
{
  int position = p->head;
  printf("======队列遍历:");
  while (position != p->tail)
  {
    printf("%d ", p->element[position]);
    position++;
  }
  printf("\n");
}
//入队
int queueIn(struct Queue* p, int num)
{
  //满了
  if (p->tail>QUEUE_LENGTH - 1)
  {
    return 0;//入队失败
  }
  p->element[p->tail] = num;
  p->tail++;
  return 1;
}
// 出队
int queueOut(struct Queue* p, int *result)
{
  if (p->head == p->tail)
    return 0;//出队失败
  *result = p->element[p->head++];
  return 1;
}
// 测试
int main()
{
  //初始化
  struct Queue queue;
  queue.head = 0;
  queue.tail = 0;
  queueIn(&queue, 1);
  queueIn(&queue, 2);
  queueIn(&queue, 3);
  printQueue(&queue);
  int result;
  queueOut(&queue, &result);
  printf("出队:%d\n", result);
  queueOut(&queue, &result);
  printf("出队:%d\n", result);
  queueIn(&queue, 4);
  printQueue(&queue);
  return 1;
}
相关文章
|
17天前
|
消息中间件 存储 搜索推荐
深入理解栈和队列(二):队列
深入理解栈和队列(二):队列
29 0
|
25天前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
36 0
|
25天前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
38 0
【队列】数据结构队列的实现
【队列】数据结构队列的实现
|
1月前
|
存储
数据结构--栈和队列
数据结构--栈和队列
|
18天前
|
存储 算法 索引
【算法与数据结构】队列的实现详解
【算法与数据结构】队列的实现详解
|
10天前
|
存储 算法 调度
数据结构期末复习(3)栈和队列
数据结构期末复习(3)栈和队列
17 0
|
21天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
21天前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解
|
1月前
|
存储
用队列和栈分别实现栈和队列
用队列和栈分别实现栈和队列
17 1