首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言队列实现

我个人把链表、队列、栈分为一类,然后图、树分为一类。(串不考虑),分类的理由就是每一类有规律可循,即你能通过修改极少数的代码把链表变成队列、栈。...(这里我们不考虑其他诸如设计模式等因素),因此本贴在讲完队列之后还会归纳一下这一类数据结构的规律,帮助大家更好理解数据结构 首先需要知道队列是什么,这里给一个定义:队列是只允许一段进行插入操作,一段进行删除操作的线性表...,队列是先进先出的结构,允许插入成为队尾,允许删除成为队头 如上图就是一个队列,这里我相信你已经对队列有了一个概念了吧,于是就可以继续看下面了 队列同样存在插入删除操作,由于我们这里讨论的是链式队列实现...我们能很容易写出下面插入节点到队列的代码(如果不能你就要发反思是否认真学习了): void en_queue(struct queue *q,char c){ struct node *e=new...n){ return; } e->data=c; e->next=NULL; if(q->rear==NULL){ q->front=q->rear

3.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言实现顺序队列

    文章目录 顺序队列常规操作 定义顺序队列结构体 初始化顺序队列 顺序队列判满 顺序队列判空 计算顺序队列的长度 顺序队列入队(EnQueue) 顺序队列出队(DeQueue) 顺序队列各操作测试 源代码...; // 队列头下标 int rear; // 队列尾下标 }*Queue; 顺序队列和顺序栈相类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外...为了在C语言中描述方便起见,初始化建空队列时,令 front = rear = 0; 每当插入新的队尾元素时 “尾指针增1”;每当删除队头元素时 “头指针增1”。...因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置。...用 循环队列 就可以解决假溢出情况。 源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构

    1.7K30

    C语言实现循环队列

    文章目录 顺序队列的假溢出 解决上溢的方法 引入循环队列 循环队列判空、判满冲突 循环队列常规操作 定义循环队列结构体 初始化循环队列 循环队列判满 循环队列判空 计算循环队列的长度 循环队列 入队(EnQueue...引入循环队列 base[0] 接在 base[MAXSIZE -1] 之后,若 rear + 1 == M,则令 rear = 0 实现方法: 利用 模(mod,C语言中: %)运算。...解决方案: 1.另外设一个标致以区别队空、队满 2.另设一个变量,记录元素个数 3.少用一个元素空间 本文实现的方法就是第三种。 ?...Failed, 1 Success) QueueFull():0 QueueEmpty():0 QueueLength():1 源代码 源代码已上传到 GitHub Data-Structure-of-C,...欢迎大家下载 C语言实现数据结构

    3K31

    链式队列(C语言实现)

    链式队列(C语言实现) 链式队列的存储结构: 我们知道,队列是操作受限制的线性表,队列有队头和队尾,插入元素的一端称为队头,删除元素的一端称为队尾。...练市队列的队头指针指向当前队列的队头结点位置,队尾指针指向队列的当前队尾结点位置。对于不带头结点的链式队列,出队列时可直接删除队头指针所指的结点,因此,链式队列不带头结点更方便。...front=NULL; } //判空 int QueueEmpty(LQueue Q) { if(Q.front==NULL) return 0; else return 1; } //入队列...(LQueue *Q,DataType *d) { LQNode *p; if(Q->front==NULL) { printf("队列已空!!...p); return 1; } } //取队头数据元素 int QueueGet(LQueue Q,DataType *d) { if(Q.front==NULL) { printf("队列已空

    50030

    C语言实现链表队列LinkQueue

    以下队列为自己设计,若有错误,欢迎大家指出,谢谢~~ 本队列原理 ?...- Node:节点 - xLinkQueue:节点控制器 -- head:总是指向队列头 -- end:总是指向队列尾 - 创建队列时,实际是创建了xLinkQueue,之后对队列的操作都是通过它 -...添加节点时,创建的Node,并将内容复制进它的buff中 - 弹出队列时,将Node中的内容先复制出来,在free释放内存 - 不是循环队列,有待改进 - 单个节点的buff最大不超过(1024*3),...如queueCreate(20, 1024*3);(不知道为什么,在我的STM32F4上申请1024*4失败) util.c /** 工具包 */ #include "util.h" static...Node *head; // 队列头节点 uint8_t length; // 记录队列的长度(已使用多少个节点) uint8_t size; // 每个节点的buff的大小 uint16

    80240

    栈和队列(C语言实现)

    栈和队列 栈 分析 初始化与销毁栈 出栈入栈与判断栈为空 获取栈顶元素 获取栈中有效元素个数 队列 分析 初始化与销毁队列 入列,出列与判断队列是否为空 获取队列头部,尾部元素 获取队列中有效元素个数...int StackSize(ST* ps)//获取栈中有效的元素 { assert(ps); return ps->top; } 队列 分析 队列是从队头出,队尾入,数组就没有链表好用了,所以我们用单向链表...typedef struct Queue { QL* head;//头结点,指向队列的队头 QL* tail;//尾结点,指向队列的队尾 int siz;//计算有多少个结点 }Qu; 初始化与销毁队列...free(cur); cur = del; } q->head = q->tail = NULL; q->siz = 0; } 入列,出列与判断队列是否为空 入列 这里需要考虑队列是否为空的尾插...int QueueSize(Qu* q)//获取队列中有效元素个数 { assert(q); return q->siz; }

    90300

    循环队列出队-循环队列c语言实现

    一、什么是循环队列   1、基本概念   队列就是一个能够实现“先进先出”的存储结构,队列分为链式队列和静态队列。...静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是用链表来实现队列的。...Item *data; //使用指针的方式,大小在使用循环队列的文件分配,减少queue.c、queue.h和其他文件的耦合性!...b、当队列为空时,front与rear的值相等,但不一定为零。   c、当队列不为空时,front指向队列的第一个元素,rear指向队列最后一个元素的下一个位置。   .../callback/*.c) C_OBJS=$(patsubst %.c, %.o,$(src)) #C_OBJS=$(dir:%.c=%.o) compile:$(TARGET

    69530

    LeetCode刷题(7)【栈&队列】用队列实现栈(C语言)

    队列实现栈 225....用队列实现栈 - 力扣(LeetCode) (leetcode-cn.com) 目的:用队列实现栈,从先进先出——>先进后出, 1234这四个数据依次从队列1的队尾进入,要让4先出,一个队列是无法实现的...,所以这里的队列2就排上用场了,我们可以利用队列2来进行导数据。...将123依次由队列2的队尾进入到队列2中,此时队列1中还剩一个4,将4弹出,同理,再将12依次进入到队列1中,将3弹出… 也就是说。 出数据把不为空的 队列数据向为空的队列中导,知道剩最后一个。...---- 队列实现——队列实现——【线性表】之队列_半生瓜のblog-CSDN博客 ---- typedef int QueueDataType; typedef struct QueueNode

    44510

    队列的基本概念详解,循环队列、链式队列C++详细实现

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、队列是什么? 二、循环队列 1.知识点概述  2.动态分配  3.初始化 4.入队  5.出队  6....取对头元素 7.取队列长度  8.总的代码 三 、链式链表  1.链队列的结构  2.链队列入队 ---- 一、队列是什么?  ...队列是只允许在一端进行的插入操作,而在另一端进行删除操作的线性表 二、循环队列 1.知识点概述 队列的顺序存储形式,可以用一段连续的空间存储数据元素,用两个整型变量记录队头和队尾元素的下标。  ...=Q.rear) //队列非空 return Q.base[Q.front]; return -1; } 7.取队列长度  代码如下 //循环队列的长度 int QueueLength(SqQueue...Q.base) return false; Q.front=Q.rear=0; //头指针和尾指针置为零,队列为空 return true; } //循环队列的入队 bool EnQueue(SqQueue

    1K10

    队列实现栈(C语言版本)

    个人主页: :✨✨✨初阶牛✨✨✨ 强烈推荐优质专栏: C++的世界(持续更新中) 推荐专栏1: C语言初阶 推荐专栏2: C语言进阶 个人信条: 知行合一 前言 在做这个题目之前,应当熟悉栈和队列这两种数据结构....栈和队列都是常见的数据结构,它们是基于数组或链表实现的线性数据结构。...应用场景:实现程序调用的函数堆栈、表达式求值、括号匹配检验等。...一、题目介绍 题目来源于–力扣 题目链接:传送门 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。...代码实现: MyStack* myStackCreate() { MyStack* stack=( MyStack*)malloc(sizeof(MyStack));//开辟栈所占的空间(两个队列

    17230

    队列实现栈&栈实现队列

    前言 给你两个栈你如何实现一个队列,给你两个队列你如何实现一个栈。 本文就跟大家分享下这两个问题的解决思路与实现过程,欢迎各位感兴趣的开发者阅读本文。...,我们先来看下如何用栈来实现队列: 我们的已知条件只有两个栈,将这两个栈进行标识:栈1、栈2 执行入队操作时,我们元素放进栈1。...接下来,我们来看下如何用队列实现栈: 同样的,我们的已知条件有两个队列,将这两个队列进行标识:队列1,队列2 执行入栈操作时,将元素放进队列1 执行出栈操作时: 如果队列2为空,我们将队列1中除队首外的元素放进队列...实现代码 经过上述分析,我们有了实现思路,接下来我们就将上述思路转化为具体的代码,下述代码中将引入我们之前写好的队列与栈的实现代码,对此不了解的开发者请移步我的另外两篇文章:数组实现栈与对象实现栈、队列与双端队列实现...栈实现队列 创建StacksAndQueues类文件,声明解决本文问题所需要的变量 // 栈与队列的相关操作 import Stack from "../..

    64020
    领券