//链队列基本运算的实现
#include<iostream>
using namespace std;typedef char datatype;  //队列元素类型,假设为字符型
typedef struct node * pointer; //结点指针类型
struct node //链队结点结构
{                datatype data;pointer next;
};
typedef struct
{pointer front;pointer rear;
} lkqueue;//初始化
lkqueue * Init_lkqueue()
{lkqueue * lq = new lkqueue;pointer p = new node;p->next = NULL;lq->front = p;lq->rear = p;return lq;
}//判队空
int Empty_lkqueue(lkqueue *lq)
{if(lq->rear==lq->front) return 1;else return 0;
}//取队头
int Gethead_lkqueue(lkqueue *lq,datatype *x)
{pointer p;if(lq->rear==lq->front){cout<<"队空,无队头可取!\n";return 0;}else{p=lq->front->next;   //队头*x=p->data;     //取出队头元素值return 1;}
}//入队
void En_lkqueue(lkqueue *lq,datatype x)
{pointer p;p=new node;         //申请新结点空间p->data=x;         //给新结点赋值lq->rear->next=p;        //原尾指针指向新结点lq->rear=p;          //新结点成为新尾结点p->next=NULL;            //新尾结点next指针为空
}//出队
int De_lkqueue(lkqueue *lq,datatype *x)
{pointer s;if(lq->rear==lq->front)//下溢{cout<<"队空,不能出队!\n";return 0;}  else{s=lq->front->next; *x=s->data;lq->front->next=s->next;  if(s->next==NULL)    //出队的是最后一个结点lq->rear=lq->front;//改尾指针delete s; return 1;}
}void Display(lkqueue * lq)
{if(lq->rear==lq->front)//下溢{cout<<"队列为空!\n";}else{pointer  p;for( p = lq->front->next; p!=lq->rear->next;p=p->next ) {cout<<p->data<<"  ";}cout<<endl;}
}int main()
{lkqueue *Q;Q=Init_lkqueue();char choice,x;int flag = 1;while(flag){cout<<"------------链队列------------------------------"<<endl;cout<<"        1. 入队列                               "<<endl;cout<<"        2. 出队列                               "<<endl;cout<<"        3. 取队头元素                           "<<endl;cout<<"        4. 判断链队列是否为空                 "<<endl;cout<<"        5. 浏览队头到队尾所有元素(测试用)     "<<endl;cout<<"        6. 退出                                 "<<endl;cout<<"------------------------------------------------"<<endl;cout<<"请选择:";cin>>choice;switch(choice){case '1':cout<<"请输入一个需要入队列的字符"<<endl;cin>>x;En_lkqueue(Q,x);cout<<"入队列完成"<<endl;break;case '2':   if(De_lkqueue(Q,&x))cout<<"出队列成功,出队列的元素是:"<<x<<endl;elsecout<<"出队列失败!"<<endl;break;case '3':   if(Gethead_lkqueue(Q,&x))cout<<"取队头元素成功,队头的元素是:"<<x<<endl;elsecout<<"取队头元素失败!"<<endl;break;case '4':   if(Empty_lkqueue(Q))cout<<"此时队列为空。"<<endl;elsecout<<"此时队列不为空。"<<endl;break;case '5':   Display(Q);break;case '6':   flag=0; break;default :   cout<<"输入错误,请重新选择。"<<endl;}}return 0;
}

转载于:https://www.cnblogs.com/wwj9413/archive/2011/11/09/2781289.html

链队列基本运算的实现相关推荐

  1. c语言循环队列入列算法,C语言——循环队列和链队列的基本运算

    // 循环队列 #include #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20; typedef struc ...

  2. 【数据结构】队列(链队列、循环队列)的存储结构及基本运算(C语言)

    目录 1. 队列基本概念 2. 链队列 2.1 代码+注释 2.2 运行结果 3. 循环队列 3.1 代码+注释 3.2 运行结果 1. 队列基本概念 队列(Queue)是一种限定性线性表,它只允许在 ...

  3. 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...

    还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...

  4. 数据结构与算法(3-2)队列(顺序队列、循环队列与链队列)

    目录 一.顺序队列 1.存储结构 2.入队和出队 总代码 二.循环队列 总代码: 三.链队列 1.存储结构 2.入队和出队 总代码 一.顺序队列 队列特征:先进后出.后进后出. 1.存储结构 //队列 ...

  5. 链队列的建立、判空、入队、出队、求长、访头、清空和销毁

    #include<iostream> using namespace std;typedef struct node {int data;struct node *next; }Node; ...

  6. 【练习】c++分别用链队列和普通队列输出杨辉三角

    普通队列: class queue {public:queue();bool empty()const;bool full() const;int get_front(int& x)const ...

  7. 【笔记 】栈底层 循环队列的处理 链栈 链队列

    栈 队列 解决"假溢出"问题的方法: 采用循环队列方式:将数组的头尾看作是相邻的元素, 即将元素data[0]看作是data[maxlen-1]的下一个元素.如图所示. 因此,插入 ...

  8. Java实现队列(循环队列,链队列)

    循环队列: package SeqQueue;public class Queue {private int data[];private int queueSize;private int fron ...

  9. 顺序队列,循环队列,链队列

    队列 先看队列接口和结点类 1. 顺序队列 2. 循环队列 3. 链队列 先看队列接口和结点类 package com.lovely.queue;/** * 2020年4月26日下午2:42:44* ...

  10. 【数据结构与算法】循环队列和链队列的比较

    前言 本文原本是一篇随感+笔记,被翻出来后就整理发了博客. 不曾想能上搜索头条,既如此,决定更新一下,加上必要的阐释,避免影响有需求的读者. (我这么理解大家,如果有需要的话,是不是可以考虑点个赞或者 ...

最新文章

  1. 当亿级流量App开始“玩”,到底在玩什么?
  2. Python基础day02 作业解析【6道 if 判断题、9道 循环题】
  3. POI Excel解析
  4. 专利翻译常用计算机词汇,基于NP树的英文专利文献术语自动翻译技术研究-计算机应用技术专业论文.docx...
  5. 正确使用IDisposable接口
  6. 题目244-16进制的简单运算
  7. 外贸常用术语_最常用的外贸术语大全,收藏备用
  8. Java基础算法看这一篇就够了,简单全面一发入魂
  9. 黑客攻防与电脑安全-从新手到高手
  10. 为什么说至强系列cpu是服务器u,至强cpu那么好,为什么日常装机的时候一般都选酷睿系列的呢?...
  11. 独自研发3年,双平台上线,我是如何从零开始做这款独立游戏的?
  12. 韦东山嵌入式linux第一期_裸机实战之开发板熟悉与体验篇
  13. 前端JS 实现将24位RGB颜色转换16位RGB颜色
  14. ad网络标号设置经验_AD9 设置网络标号作用域
  15. APICloud和海马玩模拟器结合调试手机页面
  16. SQL基础语法_刘世民
  17. 图解强化学习 原理 超详解 (一)
  18. Fastadmin 自带的导入Excel功能
  19. 狂野飙车显示无法连接服务器,狂野飙车8:极速凌云无法连接服务器是什么原因...
  20. 从崩溃的系统中恢复多可文档管理系统的办法

热门文章

  1. SQL注入原理解析以及举例1
  2. 博客目录 Blog directory
  3. CEF与JavaScript交互读取电脑信息
  4. 关于js对象添加属性
  5. JS 日期工具类-基于yDate
  6. 查找所有的两个字姓名,中间加个空格(强迫症的福音)
  7. MyBatis+MySQL 返回插入的主键ID
  8. C# Sql 触发器
  9. plsql可执行别的用户对象,过程却不行(AUTHID CURRENT_USER)
  10. C# 判断字符中是否包含中文