2024.9.3

cpp 复制代码
#include <iostream>
#include <cstring>
using namespace std;

class Stack
{
private:
    int len;
    int count = 0;
    int *stack;
public:
    Stack():len(10)             //无参构造
    {
        stack = new int[len];
        stack[len] = {0};
    }
    Stack(int len):len(len)         //有参构造
    {
        stack = new int[len];
        stack[len] = {0};
    }
    Stack(Stack &other):len(other.len)  //拷贝构造函数
    {
        stack = new int[len];
        for(int i=0;i<len;i++)
        {
            stack[i] = other.stack[i];
        }
    }
    Stack &operator=(const Stack &other)    //拷贝赋值函数
    {
        if(this != &other)
        {
            this->count = other.count;
            this->len = other.len;
            int *newstack = new int[this->len];
            for(int i=0;i<len;i++)
            {
                newstack[i] = other.stack[i];
            }
            delete [] stack;
            stack = newstack;

        }
        return *this;
    }
    ~Stack()        //析构函数
    {
        delete [] stack;
    }
    int top();
    bool empty();
    int size();
    int push(int n);
    void expand();
    void show();
    int pop();
};

int Stack::top()
{
    if(empty())
    {
        cout<<"error" <<endl;
        return -1;
    }
    return stack[count-1];
}

bool Stack::empty()
{
    return count == 0;
}

int Stack::size()
{
    return count;
}

int Stack::push(int n)
{
    if(count == len)
    {
        expand();
    }
    stack[count++] = n;
    return 0;
}

void Stack::expand()
{
    len = len * 2;
    int *newstack = new int[len];
    for(int i=0;i<count;i++)
    {
        newstack[i] = stack[i];
    }
    delete [] stack;
    stack = newstack;
}

void Stack::show()
{
    for(int i=count-1;i>=0;i--)
    {
        cout<<stack[i]<<" ";
    }
    cout<<endl;
}

int Stack::pop()
{
    if(empty())
    {
        cout<<"error"<<endl;
        return -1;
    }
    stack[--count] = 0;
    return 0;
}
class Queue
{
private:
    int len;
    int count = 0;
    int *queue;
public:
    Queue():len(10)
    {
        queue = new int[len];
        queue[len] = {0};
    };
    Queue(int n):len(n)
    {
        queue = new int[len];
        queue[len] = {0};
    };
    Queue(Queue &other):len(other.len)
    {
        queue = new int[len];
        for(int i=0;i<len;i++)
        {
            queue[i] = other.queue[i];
        }
    };
    Queue &operator=(const Queue &other)    //拷贝赋值函数
    {
        if(this != &other)
        {
            this->count = other.count;
            this->len = other.len;
            int *newqueue = new int[this->len];
            for(int i=0;i<len;i++)
            {
                newqueue[i] = other.queue[i];
            }
            delete [] queue;
            queue = newqueue;

        }
        return *this;
    }
    ~Queue()
    {
        delete []queue;
    };
    int front();
    int back();
    bool empty();
    int size();
    int push(int n);
    void pop();
    void expand();
    void show();
};
int Queue::front()
{
    if(empty())
    {
        cout<<"error"<<endl;
        return  -1;
    }
    return queue[count-1];
}
int Queue::back()
{
    if(empty())
    {
        cout<<"error"<<endl;
        return  -1;
    }
    return queue[0];
}
bool Queue::empty()
{
    return count == 0;
}
int Queue::size()
{
    return count;
}
int Queue::push(int n)
{
    if(count == len)
    {
        expand();
    }
    queue[count++] = n;
    return 0;
}
void Queue::pop()
{
    for(int i=0;i<count;i++)
    {
        queue[i] = queue[i+1];
    }
    count--;
}
void Queue::expand()
{
    len = len * 2;
    int *newqueue = new int[len];
    for(int i=0;i<count;i++)
    {
        newqueue[i] = queue[i];
    }
    delete [] queue;
    queue = newqueue;
}
void Queue::show()
{
    for(int i=0;i<count;i++)
    {
        cout<<queue[i]<<"  ";
    }
    cout<<endl;
}
int main()
{
    Stack s1(3);
    s1.push(1);
    s1.push(2);
    s1.push(3);
    s1.push(3);
    s1.pop();
    Stack s2;
    s2 = s1;
    s1.show();
    s2.show();
    cout<<s2.top()<<"   "<<s2.size()<<endl;
    cout<<"************"<<endl;
    Queue q1(3);
    q1.push(1);
    q1.push(2);
    q1.push(3);
    q1.show();
    q1.pop();
    q1.show();
    return 0;
}
相关推荐
richard_yuu4 分钟前
AOI 实战第六篇:.onnx 到 C++ 的最后一公里
c++·深度学习·yolo
桐盛科技10 分钟前
能碳数据清洗用MAD算法,窗口大小和阈值怎么调?
物联网·算法·边缘计算
Omics Pro13 分钟前
澳科大:自进化AI虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
Doubbbbbbble云13 分钟前
从算法工程化角度看空间换时间策略的权衡4
算法
wuminyu17 分钟前
Kafka配置TLS/SSL加密传输时零拷贝失效分析
java·linux·c语言·jvm·c++
影视飓风TIM22 分钟前
C++ 智能指针:auto_ptr / unique_ptr / shared_ptr / weak_ptr 原理与使用
开发语言·c++
一木 之林27 分钟前
李沐《动手学深度学习》知识卡合集:从 Softmax 回归到房价实战(第24-50集)
开发语言·c++·人工智能
心中有你021427 分钟前
Java Swing实现校园最短路径导航系统(Dijkstra算法完整源码+详细解析)
java·开发语言·算法
Alphapeople30 分钟前
路径规划算法的python实现
开发语言·python·算法
重生之小比特31 分钟前
【Java SE】数组的定义与使用
java·开发语言