栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构(三)队列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构(三)队列

数据结构(三)队列
  • 队列--c++实现
    • 队列的原型(链表描述)
    • LinkQueue类的实现

队列–c++实现 队列的原型(链表描述)

在LinkQueue.h文件中直接定义了结构体node,声明了LinkQueue类。

templatestruct node{
    T data;
    node* next;
};
template
class LinkedQueue {
private:
    node *front;
    node *last;
    int size;
public:
    LinkedQueue();                             
    ~LinkedQueue();
    int getSize() const;                    //返回队列的长度
    bool isEmpty() const;                   //判断队列是否为空
    T& getFront() const;                    //返回队列头部元素引用
    T& getLast() const;                     //返回队列尾部元素引用
    void push(const T& element );           //压入队列尾部
    void pop();                             //删除队列头部元素
};
LinkQueue类的实现
#include "LinkedQueue.h"
template
LinkedQueue::LinkedQueue() {
    front = new node;
    front->next = nullptr;
    last = front;
    size = 0;
}

template
LinkedQueue::~LinkedQueue() {
    while (size != 0) {
        node *p = front->next;
        delete front;
        front = p;
        size--;
    }
}

template
bool LinkedQueue::isEmpty() const {                 //判断队列是否为空
    return size == 0;
}

template
int LinkedQueue::getSize() const {                 //返回队列的长度
    return size;
}

template
T &LinkedQueue::getFront() const {                 //返回队列头部元素引用
    return front->data;
}

template
T &LinkedQueue::getLast() const {                 //返回队列尾部元素引用
    return last->data;
}

template
void LinkedQueue::push(const T &element) {         //压入队列尾部
    if(size == 0){
        front->data = element;
    }else{
    node *p = new node;
    p->next = nullptr;
    p->data = element;
    last->next = p;
    last = p;
    }
    size++;
}

template
void LinkedQueue::pop() {                          //删除队列头部元素
    node *p = front->next;
    delete front;
    front = p;
    size--;
}

测试程序如下:

#include 
int main(){
    LinkedQueue linkedQueue;
    for (int i = 0; i < 10; ++i) {
        linkedQueue.push(i);
    }
    std::cout << "size = " << linkedQueue.getSize() << std::endl;
    std::cout << "the queue's head is " << linkedQueue.getFront() << std::endl;
    std::cout << "the queue's last is " << linkedQueue.getLast() << std::endl;
    linkedQueue.pop();
    std::cout << "now, size = " << linkedQueue.getSize() << std::endl;
    std::cout << "the queue's head is " << linkedQueue.getFront() << std::endl;
    std::cout << "the queue's last is " << linkedQueue.getLast() << std::endl;
    return 0;
}

测试结果如图:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018114.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号