当前位置: 首页 > news >正文

链队列基本操作

目录

问题描述 

完整代码 

运行结果


问题描述 

【问题描述】

使用带头结点的单链表实现队列,完成该队列的入队、出队、判断队空操作。

【输入形式】

输入若干个整数(以空格分隔),其中0表示做出队操作,不为0的整数为入队元素。

【输出形式】

依次输出队列的全部元素,若队列为空,则输出“empty”

【样例输入1】

1 2 3 4 5 6
【样例输出1】

1 2 3 4 5 6

【样例输入2】

1 2 3 0 0 4 0 5
【样例输出2】

4 5

【样例输入3】

1 0 2 0 3 0
【样例输出3】

empty

【样例输入4】

1 0 2 0 0 3 0 0 0
【样例输出4】

empty

【评分标准】

填充函数,实现队列的基本操作,不得增加其他函数。

 

完整代码 

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef  int  ElemType;

typedef  struct  QNode{
        ElemType  data;
        struct  QNode  *next;
        }QNode;

typedef  struct  LinkQueue{
        QNode*  rear;
        QNode*  front;
        }LinkQueue;

int  InitQueue(LinkQueue  *Q)
{
        QNode*  p=(QNode*)malloc(sizeof(QNode));
        if(!p)return  0;
      Q->front=Q->rear=p;
      p->next=NULL;
        return  1;
        }

int  EnQueue(LinkQueue *Q,ElemType  e)
{
    QNode *q=(QNode *)malloc(sizeof(QNode));    
    q->data=e;
    Q->rear->next=q;
    Q->rear=q;
    return 1;
}

int  QueueEmpty(LinkQueue *Q)
{
    if(Q->front==Q->rear){
        return 1;
    }else{
        return 0;
    }

}

int  DeQueue(LinkQueue *Q,ElemType  *e)
{
    if(Q->front==Q->rear){
        return 0;
    }
    *e=Q->front->next->data;
    if(Q->front->next==Q->rear){
        Q->front->next=NULL;
        Q->rear=Q->front;
    }else{
        Q->front->next=Q->front->next->next;
    }
    return 1;
}

      int  main()
      {
                LinkQueue  q;
                int  i;
                ElemType  x;
                InitQueue(&q);
            
                  while(scanf("%d",&x)==1)
                        {
                                if(x==0)
                                        DeQueue(&q,&x);
                                else
                                        EnQueue(&q,x);
                                }
                        if(QueueEmpty(&q))
                                printf("empty");
                        else
                                while(!QueueEmpty(&q))
                                {
                                        DeQueue(&q,&x);
                                        printf("%d  ",x);
                                }

                return  1;
        }

运行结果

 

相关文章:

  • 多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制
  • Python是“真火”还是“虚火”?
  • 为什么要做数据治理以及如何进行数据治理?
  • 那些被渐渐遗忘的python知识点
  • LeetCode16. 最接近的三数之和
  • 外包干了三年,真废了。。。
  • WinLicense 3.1.3.0 Crack
  • 通过Java监听MySQL数据的变化
  • Sam-ba烧录工具的使用教程
  • 基于驾驶训练优化算法的函数寻优算法
  • Linux运维面试题总结—Linux基础、计算机网络基础
  • ARM通用中断控制器GIC之中断处理
  • Vector简介说明
  • 图像处理黑科技——弯曲矫正、去摩尔纹、切边增强、PS检测
  • 大学网课查题接口
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Angular6错误 Service: No provider for Renderer2
  • Java 23种设计模式 之单例模式 7种实现方式
  • java中的hashCode
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Redash本地开发环境搭建
  • spark本地环境的搭建到运行第一个spark程序
  • 力扣(LeetCode)22
  • 入口文件开始,分析Vue源码实现
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 《天龙八部3D》Unity技术方案揭秘
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #stm32驱动外设模块总结w5500模块
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (4)Elastix图像配准:3D图像
  • (BFS)hdoj2377-Bus Pass
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (SpringBoot)第二章:Spring创建和使用
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (汇总)os模块以及shutil模块对文件的操作
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)jQuery 基础
  • (转)大道至简,职场上做人做事做管理
  • .dwp和.webpart的区别
  • .Net 6.0 处理跨域的方式
  • .NET CLR Hosting 简介
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net core 6 redis操作类
  • .net framework4与其client profile版本的区别
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [<死锁专题>]
  • [20170713] 无法访问SQL Server