iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言数据结构中链队列的基本操作是怎样的
  • 909
分享到

C语言数据结构中链队列的基本操作是怎样的

2023-06-22 06:06:58 909人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关C语言数据结构中链队列的基本操作是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.队列的定义队列 (Queue)是另一种限定性的线性表,它只允许在表的一端

这篇文章将为大家详细讲解有关C语言数据结构中链队列的基本操作是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

    1.队列的定义

    队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out,缩写为FIFO)的特性。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。 假设队列为q=(a1,a2,…,an),那么a1就是队头元素,an则是队尾元素。队列中的元素是按照a1、a2、…、an的顺序进入的, 退出队列也必须按照同样的次序依次出队,也就是说,只有在a1、a2、…、an-1都离开队列之后,an才能退出队列。

    2.队列的表示和实现

    C语言数据结构中链队列的基本操作是怎样的

    链队列可以定义如下:

    #define  TRUE    1#define  FALSE  0typedef struct Qnode{        QElemType  data;        struct QNode *next;}QNode, *QueuePtr;typedef struct{        QueuePtr  front;        QueuePtr  rear;}LinkQueue;

    (1) 初始化操作

    Status InitQueue(LinkQueue &Q){        Q.front = Q.rear = (Queueptr) malloc(sizeof(QNode));       if(!Q.front) exit ( OVERFLOW);       Q.front ->next = NULL;       return OK;}

    (2)销毁队列

    Status DestroyQueue(LinkQueue &Q){         while(Q.front) {Q.rear = Q.front->next;free (Q.front);Q.front = Q.rear;        }        return OK;}

    (3) 入队操作

    Status EnQueue (LinkQueue &Q, QelemType e){         p= (QueuePtr) malloc(sizeof(QNode));        if (!p) exit ( OVERFLOW);        p->data = e;  p->next = NULL;        Q.rear -> next =p;        Q.rear = p;        return OK;}

    (4) 出队操作

    Status DeQueue (LinkQueue &Q, QelemType &e){        if ( Q.front == Q.rear) return ERROR;        p=Q.front->next;        e=p->data;        Q.front->next =p->next;        if (Q.rear == p) Q.rear = Q.front;        free(p);        return OK;}

    附录完整代码:

    #include<iOStream>using namespace std;#define OK 1#define FALSE 0typedef int QElemType;typedef int Status;typedef struct QNode{    QElemType data;    struct QNode *next;}QNode,*QueuePtr;typedef struct{    QueuePtr font;    QueuePtr near;}LinkQueue;Status InitQueue(LinkQueue &Q){    Q.font=(QueuePtr)malloc(sizeof(QNode));    if(!Q.font) exit(FALSE);    Q.font->next=NULL;    Q.near=Q.font;    return OK;}Status QueueEmpty(LinkQueue Q){    if(Q.font->next) return OK;    return FALSE;}Status EnQueue(LinkQueue &Q,QElemType e){    QueuePtr p=(QueuePtr)malloc(sizeof(QNode));    p->data=e;    Q.near->next = p;    Q.near = Q.near->next;    p->next = NULL;    return OK;}Status DeQueue(LinkQueue &Q,QElemType &e){    if(!Q.font->next) return FALSE;    QueuePtr p;    p=Q.font->next;    e=p->data;    Q.font->next=p->next;    if(Q.near==p) Q.near=Q.font;   //当是最后一个元素时,Q.font=NULL,Q.near=Q.font    free(p);    return OK;}Status ClearQueue(LinkQueue &Q){    QueuePtr p;    p=Q.font->next;    QueuePtr q;    while(p)    {        q=p;        p=p->next;        Q.font->next=p;        free(q);    }    Q.near=Q.font;    return OK;}void menu(){    cout<<"初始化队列:1"<<endl;    cout<<"入队:2"<<endl;    cout<<"出队:3"<<endl;    cout<<"清空队列:4"<<endl;    cout<<"退出:5"<<endl;}int main(){    LinkQueue Q;    while(true)    {        int n;        menu();        scanf("%d",&n);        int e=-1;        switch(n)        {            case 1:                InitQueue(Q);                continue;            case 2:                printf("请输入一个元素");                scanf("%d",&e);                EnQueue(Q,e);                continue;            case 3:                DeQueue(Q,e);                printf("\n出队元素%d\n",e);                continue;            case 4:                ClearQueue(Q);                printf("清空成功\n");                continue;            default:                break;        }        if(n==5)break;    }}

    关于C语言数据结构中链队列的基本操作是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

    --结束END--

    本文标题: C语言数据结构中链队列的基本操作是怎样的

    本文链接: https://www.lsjlt.com/news/303107.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C语言数据结构中链队列的基本操作是怎样的
      这篇文章将为大家详细讲解有关C语言数据结构中链队列的基本操作是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.队列的定义队列 (Queue)是另一种限定性的线性表,它只允许在表的一端...
      99+
      2023-06-22
    • C语言数据结构之链队列的基本操作
      目录1.队列的定义2.队列的表示和实现(1)初始化操作(2)销毁队列(3)入队操作(4)出队操作附录完整代码:总结1.队列的定义 队列 (Queue)是另一种限定性的线性表,它只允许...
      99+
      2024-04-02
    • C语言实现链队列基本操作
      队列的链式存储结构实现,相比于循环队列实现要复杂一些,但是没有队满的限制。 头文件声明 #include <stdio.h> #include <stdlib....
      99+
      2024-04-02
    • C语言数据结构堆的基本操作实现是怎样的
      本篇文章为大家展示了C语言数据结构堆的基本操作实现是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.基本函数实现a.代码1(向下调整)void AdjustDown(DateTyp...
      99+
      2023-06-21
    • C语言数据结构堆的基本操作实现
      目录1.基本函数实现a.代码1(向下调整)b.代码2(向上调整)c.代码3(交换)2.建堆 3.插入数据4. 删除数据5.获取堆顶的数据6.堆的数据个数7.判空8.打印9.销毁10....
      99+
      2024-04-02
    • Go 语言结构体链表的基本操作
      目录1. 什么是链表2. 单项链表的基本操作3. 使用 struct 定义单链表4. 尾部添加节点方法一5. 头部插入节点方法一6. 指定节点后添加新节点7. 删除节点1. 什么是链...
      99+
      2024-04-02
    • C语言中双链表的基本操作
      目录带头结点的双向循环链表基本操作创建销毁打印尾插法尾删头插头删查找元素位置任意位置插入任意位置删除完整代码及测试总结带头结点的双向循环链表 链表结构如下: 每个节点都有一个数据域和...
      99+
      2023-02-05
      C语言双链表 双链表的基本操作 C语言双链表操作
    • C语言编程数据结构的栈和队列
      目录栈数组实现标题全部代码Stack_array.cStack_array.h初始化数组栈满栈后扩容是否为空栈压栈和退栈链表实现stack_chain.hstack_chain.c整...
      99+
      2024-04-02
    • C++数据结构链表基本操作示例过程
      目录首先创建好一个节点其次创建一个统计节点属性增加节点用表头插入的方法插入节点删除节点首先创建好一个节点 typedef struct node { int date; s...
      99+
      2024-04-02
    • C语言数据结构之单链表操作详解
      目录1、插入操作2、删除操作3、查找操作4、修改操作5、完整代码1、插入操作 (1)创建一个新的要插入的结点 (2)将新结点的 next 指针指向插入位置后的结点 (3)将插入位置前...
      99+
      2024-04-02
    • C语言数据结构之队列的定义与实现
      目录一、队列的性质二、队列的结构三、代码实现头文件功能函数一、队列的性质 上次我们学习栈,了解到栈储存释放数据的方式是:先进后出 而队列与其相反,队列是:先进先出,后进后出。 二、队...
      99+
      2024-04-02
    • C语言数据结构算法基础之循环队列示例
      目录说明示例代码1. 首先定义结构体:2. 定义各种算法:3. 测试:4. 最后的结果:说明 循环队列是一种先进先出的,首尾相连的队列。 大致的结构如下图: 用数组来抽象的表示一下...
      99+
      2024-04-02
    • C语言数据结构进阶之栈和队列的实现
      目录栈的实现:一、栈的概念和性质二、栈的实现思路三、栈的相关变量内存布局图四、栈的初始化和销毁五、栈的接口实现:1.入栈2.出栈3.获取栈顶的数据4.获取栈的元素个数5.判断栈是否为...
      99+
      2024-04-02
    • C语言数据结构之栈与队列的相互实现
      目录一、用对列实现栈代码实现二、用栈实现队列代码实现一、用对列实现栈 题干要求: 细节分析:队列是先进先出; 要实现的栈是先进后出。 解题思路:假设:先用一个队列储存数据 N 个,...
      99+
      2024-04-02
    • C语言数据结构之队列怎么定义与实现
      今天小编给大家分享一下C语言数据结构之队列怎么定义与实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、队列的性质上次我们...
      99+
      2023-07-02
    • C语言数据结构与算法之队列的实现详解
      目录队列的概念及结构队列的实现Queue.hQueue.cTest.c队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FI...
      99+
      2022-11-13
      C语言数据结构 队列 C语言 队列实现 C语言 队列
    • C语言二叉树的链式存储结构是怎样的
      本文小编为大家详细介绍“C语言二叉树的链式存储结构是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言二叉树的链式存储结构是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。二叉树的链式存储结构是指用...
      99+
      2023-06-29
    • oracle数据库的结构及基本操作
      这篇文章主要介绍“oracle数据库的结构及基本操作”,在日常操作中,相信很多人在oracle数据库的结构及基本操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”oracle...
      99+
      2024-04-02
    • C语言数据结构之栈与队列怎么相互实现
      本篇内容介绍了“C语言数据结构之栈与队列怎么相互实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、用对列实现栈题干要求:细节分析:队列是...
      99+
      2023-07-02
    • C语言结构体是怎么样的
      这篇文章给大家分享的是有关C语言结构体是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。结构体结构是一些值的集合,这些值称为成员变量。结构的每个成员是不同类型的变量。为什么要有结构体比如说,描述一个学生时,...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作