我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++代码实现链队列详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++代码实现链队列详解

主要功能:

初始化入队出队取队头元素销毁队列输出队列

完整代码展示:


#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct QueNode{  //定义链队列存储结构
    int data;
    QueNode * next;
}QNode,*QuePtr;
typedef struct {  //定义链队列指针
    QuePtr front;  //队头指针
    QuePtr rear;  //队尾指针
}LinkQue;
bool InitQue(LinkQue &Q){  //初始化
    Q.front = Q.rear = new QNode;
    if (!Q.front) return false;
    Q.front->next = NULL;
    return true;
}
bool DestoryQue(LinkQue &Q){  //销毁表
    while (Q.front){
        Q.rear = Q.front->next;
        delete(Q.front);
        Q.front = Q.rear;
    }
    return true;
}
bool EnQue(LinkQue &Q,int e){  //入队
    QuePtr p = new QNode;
    if(!p) return false;
    p->data = e;
    p->next = NULL;
    Q.rear->next = p;
    Q.rear = p;
    return true;
}
bool OutQue(LinkQue &Q,int e){  //出队
    if(Q.front == Q.rear) return false;  //队空
    QuePtr p = Q.front->next;
    e = p->data;
    Q.front->next = p->next;
    if(Q.rear == p) Q.rear = Q.front;
    delete p;
    return true;
}
bool GetHead(LinkQue Q,int &e){  //取队头元素
    if(Q.front == Q.rear) return false;
    e = Q.front->next->data;
    return true;
}
void ShowList(LinkQue Q){   //输出链队
    QuePtr p = Q.front->next;
    while (p){
        cout<<p->data<<" ";
        p = p->next;
    }
    cout<<endl;
}
int main() {
    LinkQue Q;
    int e;
    int choose = -1;
    cout<<"1.入队-------------------2.出队"<<endl;
    cout<<"3.取头元素---------------4.销毁"<<endl;
    cout<<"5.输出链队---------------0.退出"<<endl;
    InitQue(Q);
    while (choose != 0) {
        cout << "请选择功能:";
        cin >> choose;
        switch (choose) {
            case 1:
                cout << "请输入入队元素:";
                cin >> e;
                if (EnQue(Q, e))
                    cout << "入队成功" << endl;
                break;
            case 2:
                if (OutQue(Q, e))
                    cout << "出队成功" << endl;
                break;
            case 3:
                if (GetHead(Q, e))
                    cout << "队头元素为" << e << endl;
                break;
            case 4:
                if (DestoryQue(Q))
                    cout << "销毁成功" << endl;
                break;
            case 5:
                cout << "队列元素为:";
                ShowList(Q);
                break;
        }
    }
    return 0;
}

运行结果图:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++代码实现链队列详解

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

下载Word文档

猜你喜欢

Java自定义实现链队列详解

一、写在前面 数据结构中的队列应该是比较熟悉的了,就是先进先出,因为有序故得名队列,就如同排队嘛,在对尾插入新的节点,在对首删除节点.jdk集合框架也是提供也一个Queue的接口.这个接口代表一个队列.顺序队列:ArrayBl
2023-05-30

python 队列详解及实例代码

队列特性:先进先出(FIFO)——先进队列的元素先出队列。来源于我们生活中的队列(先排队的先办完事)。Queue模块最常与threading模块一起构成生产-消费者模型,提供了一个适用于多线程编程的先进先出的数据结构,即队列。 该模块源码中
2022-06-04

RabbitMQ延时队列详解与Java代码实现

这篇文章主要介绍了RabbitMQ延时队列详解与Java代码实现,RabbitMQ延时队列是指消息在发送到队列后,并不立即被消费者消费,而是等待一段时间后再被消费者消费。这种队列通常用于实现定时任务,需要的朋友可以参考下
2023-05-18

详解Redis用链表实现消息队列

前言 Redis链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。个人认为redis消息队列有一个好处,就是可以实现分布式和共享,就和memcache作为mysql的缓存和mysql自带的缓存一样。 链表实现消息队列Redis链表
2022-06-04

C语言链式队列与循环队列怎么实现

这篇文章主要介绍了C语言链式队列与循环队列怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言链式队列与循环队列怎么实现文章都会有所收获,下面我们一起来看看吧。队列的实现队列是一种先进先出(First
2023-06-30

Laravel实现队列的示例代码

这篇文章主要为大家详细介绍了Laravel实现队列的相关知识,文中的示例代码讲解详细,具有一定的学习和借鉴价值,感兴趣的小伙伴可以跟随小编一起学习游戏
2023-02-10

C语言如何实现一个链表队列

本篇内容主要讲解“C语言如何实现一个链表队列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现一个链表队列”吧!C语言数据结构链表队列的实现1.写在前面  队列是一种和栈相反的,遵循先
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录