首页 > 编程语言 >链队(c++)

链队(c++)

时间:2024-10-16 19:17:13浏览次数:9  
标签:return 链队 LinkQueue c++ next front LinkNode rear

//队列的顺序实现

//线性表 先进先出

#include<iostream>

using namespace std;

#define MaxSize 100

typedef struct LinkNode

{

char data;

struct LinkNode *next;

}LinkNode,*QueuePtr;

typedef struct{

    QueuePtr front,rear;

}LinkQueue;

//初始化

void InitQueue(LinkQueue&Q){

   Q.front=Q.rear=new LinkNode;

   Q.front->next=NULL;

}

//判断是否为空

bool QueueEmpty(LinkQueue &Q,char e)

{

    if(Q.rear==Q.front)

    return true;

    else return false;

}

//入队

bool EnQueue(LinkQueue &Q,char e)

{

LinkNode *p;

p=new LinkNode;

p->data=e;

p->next=NULL;

Q.rear->next=p;

Q.rear=p;

return true;

}

//出队

char DeQUeue(LinkQueue &Q)

{

    char e;

    LinkNode *p;

    if(Q.rear==Q.front)

    return -1;

    p=Q.front->next;

    e=p->data;

    Q.front->next=p->next;

    if(Q.rear==p)

    Q.rear=Q.front;

    delete p;

    return e;

}

//获取队头元素的值

char GetHead(LinkQueue &Q)

{

   if (Q.rear == Q.front)

             return -1;

   return Q.front->next->data;

}

//置空

void zhi(LinkQueue &Q)

{

    LinkNode *p,*q;

    p=Q.front->next;

    while(p)

    {

        q=p->next;

        delete p;

        p=q;

    }

    Q.rear=Q.front;

}

//销毁

void DestroyQueue(LinkQueue &Q)

{

    LinkNode *p;

    while(Q.front)

    {

        p=Q.front->next;

        delete Q.front;

        Q.front=p;

    }

}

int main(){

LinkQueue l;

InitQueue(l);

for(int i=0;i<5;i++)

{

    char a;

    cin>>a;

    EnQueue(l,a);

}

cout<<GetHead(l)<<endl;

for(int i=0;i<5;i++)

cout<<DeQUeue(l)<<" ";

zhi(l);

DestroyQueue(l);

   return 0;

}

标签:return,链队,LinkQueue,c++,next,front,LinkNode,rear
From: https://blog.csdn.net/2301_79727388/article/details/142989689

相关文章

  • 链栈(c++)
    //链栈#include<iostream>#include<string>usingnamespacestd;typedefstructStackNode{  chardata;  structStackNode*next;}StackNode,*LinkStack;//初始化boolInitStack(LinkStack&L){  L=NULL;   returntrue;}//入栈boolPush(......
  • 【C++】精妙的哈希算法
    ......
  • C/C++语言基础--C++异常看这一篇就够了
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言通过前面几节课,我们学习了抽象、封装、继承、多态等相关的概念,接下来我们将讲解异常,异常是专门处理错误的;这一次加了不少图标,希望大家喜欢;C语言后面也会继续更新知识点,如内联汇编;欢迎收藏+关注,本人将会持续更新......
  • 算法-中缀转后缀表达式(C++)
    因为操作数在后缀表达式中它们的顺序与中缀表达式一致,所以操作数不需要进行特殊处理,所以遇到数字就输出,遇到符号就经过处理再输出所以需要用一个存储结构存符号为什么用栈存储:要利用后进先出的特性出栈也就是加入到后缀表达式中,一部分一部分处理,处理完一部分,要处理他邻近的......
  • 打卡信奥刷题(056)用C++工具信奥P10566[普及组/提高] 「Daily OI Round 4」Analysis
    「DailyOIRound4」Analysis题目描述小C的信息技术老师给小C布置了一项作业,作业内容如下:有一个字符串,包含大小写字母和数字。你可以把任意一个字符变成另外一个字符,设变化之前字符的ASCII码为a......
  • C++构建工具-构建系统
    构建CI/CDCI这步,首先需要一个版本控制系统,当前最好用的就是git流程:主线分支上设置静态代码检查,用来检测每一笔提交的质量,比如命名规范等。 还会设置自动化单元测试,看守代码功能,并进行代码覆盖率分析代码拉取功能; 构建 安装包依赖项功能,依赖项需......
  • C++入门语法
    目录知识点补充1.C语言中的作用域作用域的种类作用域的影响2.以下是C++和C语言对全局变量和局部变量命名冲突的处理3.类型定义C++关键字命名空间1.C++提出的命名空间是为了解决C语言以下几个缺陷2.命名空间的3种定义方式2.1.正常的命名空间定义2.2.命名空间可以嵌......
  • C++ 排序算法(选择、冒泡、插入)
    八、选择排序(从小到大): 选择排序的基本思想是:每一趟从待排序的数据中,通过“打擂台”比较选出最小元素,放在这些数据的最前面。这样,第一趟把n个数中(第1个到第n个)最小的放在第一个位置,第二趟把剩余的n-1个数中(第2个到第n个)最小的放在第二个位置,第三趟把剩余的n......
  • 【数据结构】自己动手写一个C++链表功能
    链表数据结构在操作数据时具有更高的性能,但同时因为其结构的原因会造成时间复杂度为O(N),因此理解链表结构的底层实现能够让我们在开发中对程序的性能进行进一步优化。如果你不知道什么是链表或者时间复杂度,可以参考我另外两篇文章:【数据结构】数组、链表、堆栈、队列到......
  • c++面向对象的两种格式
            面向对象编程(OOP)是C++的一个重要特性,它允许你将代码组织成类(class)和对象(object),从而提高代码的可读性、可维护性和复用性。所以,在项目开发中使用面向对象编程是非常重要的,即便函数也可以提高封装性,但是,类的使用通俗来说,直接将函数封装,同时可以通过继承父类来大......