9月8日作业

思维导图

栈stack.h

#ifndef STACK_H
#define STACK_H
#include 
#define MAXSIZE 128

using namespace std;
class Stack
{
public:
    //构造函数
    Stack();
    //析构函数
    ~Stack();
    //拷贝构造函数
    Stack(const Stack &other);
    //入栈
    bool push(int value);
    //出栈并返回栈顶元素
    int pop();
    //清空栈
    bool clear();
    //判空
    bool isEmpty();
    //判满
    bool isFull();
    //获取栈顶元素
    int stacktop();
    //求栈的大小
    int stacksize();
    //输出栈元素
    bool show();

private:
    int *stackData;
    int topIndex;
};

#endif // STACK_H

stack.cpp

#include"stack.h"

//构造函数
Stack::Stack()
{
    // 使用动态内存分配来创建堆上的栈
    stackData = new int[MAXSIZE];
    topIndex = -1; // 初始化栈顶索引为-1,表示栈为空
}

//析构函数
Stack::~Stack()
{
    delete [] stackData;
}

//拷贝构造函数
Stack::Stack(const Stack &other)
{
    topIndex = other.topIndex;
    stackData = new int[MAXSIZE];

    for (int i = 0; i <= topIndex; i++) {
        stackData[i] = other.stackData[i];
    }
}

//入栈
bool Stack::push(int value)
{
    if(isFull()){
        cout<<"该栈已满,无法插入"<

main.cpp

#include"stack.h"

int main()
{
    Stack s1;
    s1.push(5);
    s1.push(5);
    s1.pop();
    s1.show();
    s1.~Stack();
    return 0;
}

循环队列 loopqueue.h

#ifndef LOOPQUEUE_H
#define LOOPQUEUE_H
#include 
#define MAXSIZE 16

using namespace std;
class LoopQueue
{
public:
    //构造函数
    LoopQueue();

    //析构函数
    ~LoopQueue();

    //拷贝构造函数
    LoopQueue(const LoopQueue &other);

    //入队列
    bool push(int value);

    //出队列并返回队列顶元素
    int pop();

    //清空队列
    bool clear();

    //判空
    bool isEmpty();

    //判满
    bool isFull();

    //求队列的大小
    int LoopQueuesize();

    //输出队列元素
    bool show();

private:
    int *LoopQueueData;
    int FrontIndex;
    int RearIndex;
};
#endif // LOOPQUEUE_H

loopqueue.cpp

#include"LoopQueue.h"

//构造函数
LoopQueue::LoopQueue()
{
    LoopQueueData = new int[MAXSIZE];
    FrontIndex = 0;
    RearIndex = 0;
}

//析构函数
LoopQueue::~LoopQueue()
{
    delete [] LoopQueueData;
}

//拷贝构造函数
LoopQueue::LoopQueue(const LoopQueue &other)
{
    LoopQueueData = new int[MAXSIZE];
    int i=other.FrontIndex;
    while(1)
    {
        LoopQueueData[i] = other.LoopQueueData[i];
        i++;
        if(MAXSIZE==i)
        {
            i=0;
        }
        if(i==other.RearIndex)
        {
            break;
        }
    }
    FrontIndex = other.FrontIndex;
    RearIndex = other.RearIndex;
}

//入队列
bool LoopQueue::push(int value)
{
    if(isFull()){
        cout<<"该队列已满"<>";
        while(1)
        {
            cout<

main.cpp

#include"LoopQueue.h"

using namespace std;

int main()
{
    LoopQueue l1;
    /*int value = -1;
    while(1){
        cout<<"请输入要插入的值>>> "<>value;
        if(-1==value){
            break;
        }else{
            l1.push(value);
        }
    }*/
    l1.push(23);
    l1.push(44);
    l1.push(39);
    l1.pop();
    l1.show();
    cout<<"队列大小为>>"<

你可能感兴趣的:(数据结构,算法)