C语言《数据结构》———顺序队列

简介: C语言《数据结构》———顺序队列

前言


能够熟练掌握顺序队列,掌握它的特点,方便后面用来解决某些问题,例如二叉数的层序遍历;

提示:以下是本篇文章正文内容,下面案例可供参考


*在这里插入代码片*


一、什么是顺序队列


顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表。和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应设置为0。


df0db61518985ed64adc622ad0eff12f_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-D6ZqP6ICM5Yqo,size_20,color_FFFFFF,t_70,g_se,x_16.png


二、代码实现


1.创建顺序表


代码如下(示例):


typedef struct Sequeue
{
  elemstyle* data;
  int top;
  int rear;
}SeqQueue;
//队列初始化;
SeqQueue* Init_SeqQueue(SeqQueue* ps)
{
  ps->data = (elemstyle*)malloc(sizeof(elemstyle));
  ps->rear = ps->top = 0;
  return ps;
}


2.入队,出队操作


代码如下(示例):
//入队;
void pushSeqQueue(SeqQueue* ps, int val)
{
  assert(ps != NULL);
  ps->data[ps->rear++] = val;
}
//出队;
int popSeqQueue(SeqQueue* ps)
{
  assert(ps != NULL);
  if (ps->top != ps->rear)
  {
  printf("%5d", ps->data[ps->top++]);
  }
  else
  {
  return false;
  }
}



该处使用的url网络请求的数据。


3.源代码


//顺序队列;
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#include<windows.h>
#define maxsize 10
#define ok 1
#define erro -1
#define true 2
#define false -2
typedef int elemstyle;
//顺序队列
typedef struct Sequeue
{
  elemstyle* data;
  int top;
  int rear;
}SeqQueue;
//队列初始化;
SeqQueue* Init_SeqQueue(SeqQueue* ps)
{
  ps->data = (elemstyle*)malloc(sizeof(elemstyle));
  ps->rear = ps->top = 0;
  return ps;
}
//入队;
void pushSeqQueue(SeqQueue* ps, int val)
{
  assert(ps != NULL);
  ps->data[ps->rear++] = val;
}
//出队;
int popSeqQueue(SeqQueue* ps)
{
  assert(ps != NULL);
  if (ps->top != ps->rear)
  {
  printf("%5d", ps->data[ps->top++]);
  }
  else
  {
  return false;
  }
}
//判空;
int emptySeqQueue(SeqQueue* ps)
{
  assert(ps != NULL);
  if (ps->rear - ps->top == 0)
  {
    return true;
    }
  else
  {
  return false;
  }
}
//队列长度;
int lengthSeqQueue(SeqQueue* ps)
{
  assert(ps != NULL);
  return (ps->rear - ps->top );   //rear和top代表的是下标;
}
//获取队头元素;
void frontSeqQueue(SeqQueue* ps)
{
  assert(ps != NULL);
  int length=lengthSeqQueue(ps);
  if(length!=0)
  printf("队头元素为:%5d\n", ps->data[ps->top]);
  else
  {
  printf("队列为空,无法获取队头元素;\n");
  }
}
//调试函数;调试的时候去掉过度符
/*
int main(void)
{
  SeqQueue ps;
  //队列初始化;
  Init_SeqQueue(&ps);
  //入队;
  for (int i = 0; i < maxsize; i++)
  {
  pushSeqQueue(&ps, i);
  }
  //出队;
  for (int i = 0; i < maxsize; i++)
  {
  popSeqQueue(&ps);
  }
}
*/`


总结


顺序队列是一种很简单的数据存储结构,和顺序表大同小异。以上是我打的代码,希望能够帮到你。

相关文章
|
3天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
18天前
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
45 5
|
18天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
84 64
|
3天前
|
存储 算法 C语言
【趣学C语言和数据结构100例】
《趣学C语言和数据结构100例》精选5个编程问题,涵盖求最大公约数与最小公倍数、字符统计、特殊序列求和及阶乘计算等,通过实例讲解C语言基础与算法思维,适合初学者实践学习。
|
11天前
初步认识栈和队列
初步认识栈和队列
35 10
|
11天前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
15 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
13天前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
25 2
|
13天前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
17 2
【数据结构】--- 栈和队列
【数据结构】--- 栈和队列
|
18天前
|
消息中间件 存储 Java
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
23 4