6-19 数据结构考题 - 链队列

这篇具有很好参考价值的文章主要介绍了6-19 数据结构考题 - 链队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用链队列作存储结构,实现队列(元素为整型)的基本运算。

链队列的类型定义:

typedef int ElemType;
typedef struct QNode
{
    ElemType data;                    
    struct QNode *next;
}QNode;
typedef struct
{
    QNode *front;
    QNode *rear;
}LinkQueue;

下面给出了 链队列操作 函数的大部分内容,但缺少了一部分(以下划线____标识出来的部分)。

请先将以下代码中画横线的部分补充完整,然后将完整的函数GetHead,EnQueue,DeQueue 提交系统,完成题目要求的功能。

函数接口定义:

bool  GetHead (LinkQueue  Q,  ElemType  &e)
{    if ( ____ )
           {  cout<<"NULL"<<endl;  return  false; }
      e= ____ ;
      return  true;
}

void  EnQueue(LinkQueue  &Q, ElemType  e)
{   QNode *p;
    p=new  QNode;
    p->data=e;   
    p->next=NULL;
    Q.rear->next= ____ ;
    Q.rear= ____ ;
}

bool  DeQueue(LinkQueue &Q,  ElemType &e)
{    QNode *p;
     if ( ____ )
     {  cout<<"NULL"<<endl;  return  false; }
     p= ____ ;  
     e=p->data;
     Q.front->next= ____ ;
     if(Q.rear==p)  Q.rear=Q.front;
     delete p;
     return  true;
}

 文章来源地址https://www.toymoban.com/news/detail-860548.html

该函数中的参数说明:

  • LinkQueue &Q :链队列 Q
  • ElemType e : 用于存放入队或出队的数据元素 e

测试主程序样例:

int main()
{    
    LinkQueue Q;
    ElemType x,e;
    InitQNode(Q);
    cin>>x;
    while(x!=-1)
    {    
        EnQueue(Q,x);
        cin>>x;
    }
    cout<<"Head:";
    if(GetHead(Q,e))
            cout<<e<<endl;
    cout<<"Pop:";
    while(DeQueue(Q,e))
       cout<<e<<' ';
    return 0;
}

 输入格式:

在一行输入若干个队列元素值,调用入队函数把输入的元素值入队,用−1表示输入结束(−1不属于队列)。

输出格式:

输出分两行:

第一行输出队头元素。如队列为空,输出NULL。

第二行依次输出出队元素,直到队列为空。元素间以空格分隔,队列为空时输出NULL。

输入样例:

1 3 5 7 9 -1

输出样例:

Head:1
Pop:1 3 5 7 9 NULL 

 

bool  GetHead (LinkQueue  Q,  ElemType  &e)
{    
    if (Q.front == Q.rear) // 队列为空
    {  
        cout << "NULL" << endl;  
        return  false; 
    }
    e = Q.front->next->data; // 获取队头元素
    return  true;
}

void  EnQueue(LinkQueue  &Q, ElemType  e)
{   
    QNode *p;
    p = new  QNode;
    p->data = e;   
    p->next = NULL;
    Q.rear->next = p; // 将新节点插入到队尾
    Q.rear = p; // 更新队尾指针
}

bool  DeQueue(LinkQueue &Q,  ElemType &e)
{    
    QNode *p;
    if (Q.front == Q.rear) // 队列为空
    {  
        cout << "NULL" << endl;  
        return  false; 
    }
    p = Q.front->next; // 获取队头节点
    e = p->data; // 获取队头元素
    Q.front->next = p->next; // 将队头节点出队
    if (Q.rear == p) // 如果队列只有一个节点,更新队尾指针
        Q.rear = Q.front;
    delete p; // 释放队头节点的内存
    return  true;
}

到了这里,关于6-19 数据结构考题 - 链队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌(C语言)-数据结构与算法-队列-第1关:实现一个顺序存储的队列

    任务描述 相关知识 顺序存储的队列 顺序队列的主要操作 编程要求 测试说明 任务描述 本关任务:实现 step1/SeqQueue.cpp 中的 SQ_IsEmpty 、 SQ_IsFull 、 SQ_Length 、 SQ_In 和 SQ_Out 五个操作函数,以实现判断队列是否为空、是否为满、求队列长度、队列元素入队和出队等功能。 相关知

    2024年02月06日
    浏览(142)
  • 数据结构笔记NO.1(绪论、线性表、栈队列和矩阵的压缩存储)

    1、数据结构 三要素 :逻辑结构、存储结构(物理结构)、数据的运算。 (1)逻辑结构:是指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 (2)存储结构(物理结构):是指数据在计算机中的表示(又称映像),是用计算机语

    2024年02月04日
    浏览(38)
  • 【数据结构与算法】【约瑟夫问题】还在用递归?教你用链表秒杀约瑟夫

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《数据结构与算法:初学者入门指南》📘📘 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://su

    2024年02月19日
    浏览(37)
  • 【数据结构与算法分析】使用C语言实现队列的两种(带头结点与不带头结点)链式存储,并且给出一种循环队列的设计思想

      当我们编写程序时,经常需要处理各种数据结构。队列是一种常见的数据结构,它有着广泛的应用场景。队列的基本操作包括入队和出队,应用于模拟等待队列、消息队列、计算机缓存等场合。   在实际编程中,我们可以用不同的数据结构来实现队列。本文主要介绍了

    2024年02月08日
    浏览(102)
  • 数据结构:编写程序用队列实现打印杨辉三角

              本文将通过完成用队列实现打印杨辉三角,代码解释标注全面而且清晰,代码书写也十分规范,适合初学者进行学习,本篇文章算是本人的一些学习记录分享,希望对有需要的小伙伴提供一些帮助~ 希望能帮助大家掌握: 掌握定义顺序队和链队的结点类型的方

    2024年02月06日
    浏览(45)
  • 数据结构day5(2023.7.19)

      双向链表的插入与删除:    练习1:单链表任意元素删除 练习2: 单链表任意元素查找 练习3: 单链表逆置 练习4:单链表排序(冒泡排序) 练习5: 单链表释放 练习6:单向循环链表节点创建  练习7:单向循环链表头插  练习8:单向循环链表的尾插 练习9:单向循环链

    2024年02月16日
    浏览(32)
  • MySQL学习Day19——索引的数据结构

    一、为什么使用索引: 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教课书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据査找时,首先查看查询条件是否命中某条索引,符合则通过索引査找

    2024年02月21日
    浏览(44)
  • 【数据结构和算法】--队列的特殊结构-循环队列

    循环队列是队列的一种特殊结构,它的 长度是固定的 k ,同样是 先进先出 ,理论结构是 首尾相连的环形循环结构 。其理论结构大致如下: 具体结构描述可以参考 LeetCode : 622. 设计循环队列的题目要求,大致如下: 设计你的循环队列实现。 循环队列是一种 线性数据结构 ,

    2024年02月04日
    浏览(45)
  • 【数据结构-队列】队列介绍

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月09日
    浏览(40)
  • 【数据结构-队列】阻塞队列

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包