C++ 实现queue(队列)链表

本文介绍了一种使用C++实现队列的方法,通过定义链表结构节点和Queue类,提供了enqueue、dequeue、isfull、isempty及显示队列元素等操作。示例代码展示了如何创建队列、添加元素、移除元素以及打印队列内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*queue.h*/

#ifndef QUEUE_H_
#define QUEUE_H_
 typedef struct node1
 {
    int data;
    node1* next;
 }node;

class Queue
{
private:
    node *front;
    node *rear;
    int index;
    int size;
public:
    Queue(int s=5);
    ~Queue();
    void enqueue(int data);
    void dequeue(int d);
    bool isfull();
    bool isempty();
    void show();
};

#endif  QUEUE_H_

/*queue.cpp*/

#include"queue.h"
#include<iostream>
using namespace std;

Queue::Queue(int s)
{
    s=size;
    front=rear=NULL;
    index=0;
}
Queue::~Queue()
{
    node *temp;
    while(front!=NULL)
    {
    temp=front;
    front=front->next;
    delete temp;
    }
}
bool Queue::isempty()
{
    if(index==0)
        return true;
    else
        return false;
}
bool Queue::isfull()
{
    if(index==size)
        return true;
    else
        return false;
}
void Queue::enqueue(int data)
{
    if(isfull()==true)
    {
        cout<<"there is no space"<<endl;
        return;
    }
    node *a=new node;
    if(a==NULL)
        return;
    a->data=data;
    a->next=NULL;
    index=index+1;
    if(front==NULL)
        front=a;
    else
        rear->next=a;
    rear=a;
    cout<<data<<"has enqueue"<<endl;
}
void Queue::dequeue(int d)
{
    if(isempty()==true)
    {
        cout<<"it is a empty queue"<<endl;
        return;
    }
    d=front->data;
    index--;
    node *temp=front;
    front=front->next;
    delete temp;
    if(index=0)
        rear=NULL;
    cout<<d<<"has benn dequeue"<<endl;
}
void Queue::show()
{
    node *temp;
    for(temp=front;temp->next!=NULL;temp=temp->next)
    {
        cout<<temp->data<<" ";
    }
    cout<<endl;
}

/*main.cpp*/

#include"queue.h"

void main()
{
    Queue *q=new Queue(6);
    q->enqueue(5);
    q->enqueue(6);
    q->enqueue(8);
    q->enqueue(2);
    q->enqueue(4);
    q->enqueue(9);
    q->dequeue(5);
    
    q->show();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值