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

 更新时间:2021年09月27日 10:18:14   作者:果酱包  
下面小编就为大家分享一篇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;
}

运行结果图:

总结

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

相关文章

  • 详解安卓系统中的Android.mk文件

    详解安卓系统中的Android.mk文件

    这篇文章主要介绍了详解安卓系统中的Android.mk文件,该文件用来告诉系统关于源代码的编译,需要的朋友可以参考下
    2015-07-07
  • 详解C语言中不同类型的数据转换规则

    详解C语言中不同类型的数据转换规则

    这篇文章给大家讲解不同类型数据间的混合运算与类型转换,有自动类型转换和强制类型转换,针对每种转换方法小编给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • C++中静态数据成员使用示例

    C++中静态数据成员使用示例

    大家好,本篇文章主要讲的是C++中静态数据成员使用示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 数据结构 中数制转换(栈的应用)

    数据结构 中数制转换(栈的应用)

    这篇文章主要介绍了数据结构 中数制转换(栈的应用)的相关资料,需要的朋友可以参考下
    2017-06-06
  • Objective-C不带加减号的方法实例

    Objective-C不带加减号的方法实例

    显而易见的事实是,Objective-C 中,+ 表示类方法,- 表示实例方法,这篇文章主要给大家介绍了关于Objective-C不带加减号的相关资料,需要的朋友可以参考下
    2021-06-06
  • C++数据结构与算法之双缓存队列实现方法详解

    C++数据结构与算法之双缓存队列实现方法详解

    这篇文章主要介绍了C++数据结构与算法之双缓存队列实现方法,结合实例形式分析了双缓存队列的原理、实现方法与相关注意事项,需要的朋友可以参考下
    2017-08-08
  • C++的输入和输出流详解

    C++的输入和输出流详解

    这篇文章主要为大家详细介绍了C++的输入和输出流,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言 共用体(Union)详解及示例代码

    C语言 共用体(Union)详解及示例代码

    本文主要介绍C语言 共用体,这里整理了相关资料及示例代码,帮助大家学习理解此部分的知识,有兴趣的小伙伴可以参考下
    2016-08-08
  • C语言实现反弹球小游戏

    C语言实现反弹球小游戏

    这篇文章主要为大家详细介绍了C语言实现反弹球小游戏,利用函数写的C语言小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Pthread 并发编程线程自底向上深入解析

    Pthread 并发编程线程自底向上深入解析

    这篇文章主要为大家介绍了Pthread 并发编程线程自底向上深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论