数据结构之队列学习

**

以下内容来自幕课网Jmaes老师视频 地址:https://www.imooc.com/video/10305

**

1.队列(普通队列,环形队列)
这里写图片描述

2.环形队列示例源码
MyQueueTest.h

#ifndef MYQUEUETEST_H
#define MYQUEUETEST_H

#include"person.h"
class MyQueueTest
{
public:
    MyQueueTest(int queueCapacity);
    virtual ~MyQueueTest();
    void cleanQueue();
    bool queueEmpty() const;
    bool queueFull() const;
    int queueLength() const;
    bool addQueue(Person element);
    bool delQueue(Person& element);
    void PrintSelf();
private:
    Person* m_pQueue;
    int m_iQueueLenth;
    int m_iQueueCapacity;

    int m_iHead;
    int m_iTail;

};

#endif // MYQUEUETEST_H

MyQueueTest.cpp

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

MyQueueTest::MyQueueTest(int queueCapacity)
{
    m_iQueueCapacity = queueCapacity;
    m_pQueue = new Person[m_iQueueCapacity];
    cleanQueue();
}

MyQueueTest::~MyQueueTest()
{
    delete[] m_pQueue;
    m_pQueue = nullptr;
}

void MyQueueTest::cleanQueue()
{
    m_iHead = 0;
    m_iTail = 0;
    m_iQueueLenth = 0;
}

bool MyQueueTest::queueEmpty() const
{
    return m_iQueueLenth==0 ? true : false;
}

bool MyQueueTest::queueFull() const
{
    return m_iQueueLenth==m_iQueueCapacity ? true : false;
}

int MyQueueTest::queueLength() const
{
    return m_iQueueLenth;
}

bool MyQueueTest::addQueue(Person element)
{
    if(queueFull())
        return false;
    m_pQueue[m_iTail] = element;
    ++m_iTail;
    m_iTail = m_iTail%m_iQueueCapacity;
    ++m_iQueueLenth;
    return true;
}

bool MyQueueTest::delQueue(Person &element)
{
    if(queueEmpty())
        return false;
    element = m_pQueue[m_iHead];
    ++m_iHead;
    m_iHead = m_iHead%m_iQueueCapacity;
    --m_iQueueLenth;
    return true;
}

void MyQueueTest::PrintSelf()
{
    for(int i=m_iHead; i<m_iQueueLenth+m_iHead; i++){
        m_pQueue[i%m_iQueueCapacity].printInfo();
        cout << "the front of person:" << i-m_iHead << endl;
    }
}

person.h

#ifndef PERSON_H
#define PERSON_H

#include<string>

class Person
{
public:
    Person(std::string name="",int age=1);

    void printInfo() const;
private:
    std::string m_strName;
    int m_iAge;
};

#endif // PERSON_H

person.cpp

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

Person::Person(std::string name, int age)
{
    m_strName = name;
    m_iAge = age;
}

void Person::printInfo() const
{
    cout << "name:" << m_strName <<endl;
    cout << "age:" << m_iAge << endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值