当前位置:首页 » 《关注互联网》 » 正文

坐牢第三十四天(c++)

2 人参与  2024年09月15日 16:42  分类 : 《关注互联网》  评论

点击全文阅读


一.作业

1.栈的手写

#include <iostream>using namespace std;// 封装一个栈class stcak{private:    int *data;    //    int max_size; // 最大容量    int top;      // 下标public:    // 无参构造函数    stcak();    // 有参构造函数    stcak(int size);    // 拷贝构造函数    stcak(const stcak &other);    // 析构函数    ~stcak();    // 判空函数    bool empty();    // 判满函数    bool full();    // 扩容函数    void resize(int new_size);    // 返回元素个数函数    int size();    // 向栈顶插入元素函数    void push(int value);    // 删除栈顶元素函数    int pop();    // 访问栈顶元素函数    int get_top();    // 赋值重载函数    stcak &operator=(const stcak &other);    // 遍历栈里元素函数    void show();};// 无参构造函数stcak::stcak() : max_size(10){    data = new int[10];    max_size = 10;    top = -1;    cout << "无参构造" << endl;}// 有参构造函数stcak::stcak(int size){    data = new int[size];    max_size = size;    top = -1;    cout << "有参构造" << endl;}// 拷贝构造函数stcak::stcak(const stcak &other){    max_size = other.max_size;    top = other.top;    data = new int[max_size];    for (int i = 0; i <= top; i++)    {        data[i] = other.data[i];    }    cout << "拷贝构造" << endl;}// 析构函数stcak::~stcak(){    delete[] data;    cout << "析构函数" << endl;}// 判空函数bool stcak::empty(){    return top == -1;}// 判满函数bool stcak::full(){    return top == max_size - 1;}// 扩容函数void stcak::resize(int new_size){    int *new_data = new int[new_size];    for (int i = 0; i <= top; i++)    {        new_data[i] = data[i];    }    delete[] data;    data = new_data;    max_size = new_size;}// 返回元素个数函数int stcak::size(){    return top + 1;}// 向栈顶插入元素函数void stcak::push(int value){    if (full())    {        // 调用扩容函数        resize(max_size * 2);    }    data[++top] = value;}// 删除栈顶元素函数int stcak::pop(){    if (empty())    {        cout << "栈是空的";        return -1;    }    return data[top--]; // 出栈}// 访问栈顶元素函数int stcak::get_top(){    if (empty())    {        cout << "栈是空的";        return -1;    }    return data[top]; // 出栈}// 赋值重载函数stcak &stcak::operator=(const stcak &other){    if (this == &other)    {        return *this;    }    delete[] data;    max_size = other.max_size;    top = other.top;    data = new int[max_size];    for (int i = 0; i <= top; i++)    {        data[i] = other.data[i];    }    return *this;}// 遍历栈里元素函数void stcak::show(){    if (empty())    {        cout << "栈是空的";        return;    }    cout << "栈里元素有:"<<endl;    for (int i = 0; i <= top; i++)    {        cout<< data[i] <<'\t';     }    cout <<endl;}/******************主函数*********************/ int main(){    stcak s1(20);    cout << s1.size() << endl;    s1.push(1);    s1.push(2);    s1.show();    cout << s1.size() << endl;    stcak s2 = s1;    return 0;}

 效果图:

2.队列的手写

#include <iostream>using namespace std;class queue{private:    int *data;    // 容器    int max_size; // 最大容量    int front;    // 头下标    int tail;     // 尾下标public:    // 无参构造函数    queue();    // 有参构造函数    queue(int size);    // 拷贝构造函数    queue(const queue &other);    // 析构函数    ~queue();    // 判空函数    bool empty();    // 判满函数    bool full();    // 扩容函数    void resize(int new_size);    // 元素个数函数    int size();    // 向队列尾部插入元素函数    void push(int value);    // 删除首个元素函数 出队    int pop();    // 遍历队列元素    void show();    // 赋值重载函数    queue &operator=(const queue &other);};// 无参构造函数queue::queue() : max_size(10){    data = new int[10];    max_size = 10;    front = tail = -1;    cout << "无参构造" << endl;}// 有参构造函数queue::queue(int size){    data = new int[size];    max_size = size;    front = tail = 0;    cout << "有参构造" << endl;}// 拷贝构造函数queue::queue(const queue &other){    max_size=other.max_size;    front=other.front;    tail=other.tail;    data=new int[max_size];    for (int i = front; i != tail; i = (i + 1) % max_size)    {        data[i]=other.data[i];    }       cout << "拷贝构造" << endl;}// 析构函数queue::~queue(){    delete[] data;    cout << "析构函数" << endl;}// 判空函数bool queue::empty(){    return front == tail;}// 判满函数bool queue::full(){    return (tail + 1) % max_size == front;}// 元素个数函数int queue::size(){    return (tail - front + max_size) % max_size;}// 扩容函数void queue::resize(int new_size){    int *new_data = new int[new_size];    for (int i = front; i <= tail; i++)    {        new_data[i] = data[i];    }    data = new_data;    max_size = new_size;}// 向队列尾部插入元素函数void queue::push(int value){    if (full())    {        // 调用扩容函数        resize(max_size * 2);    }    data[tail] = value;    tail = (tail + 1) % max_size;}// 删除首个元素函数 出队int queue::pop(){    if (empty())    {        cout << "队列为空" << endl;        return -1;    }    cout << data[front] << "出队" << endl;    front = (front + 1) % max_size;    return 0;}// 遍历队列元素void queue::show(){    if (empty())    {        cout << "队列为空" << endl;        return;    }    cout << "队列元素:" << endl;    for (int i = front; i != tail; i = (i + 1) % max_size)    {        cout << data[i] << '\t';    }    cout << endl;}// 赋值重载函数queue &queue::operator=(const queue &other){    if (this == &other)    {        return *this;    }    delete []data;    max_size=other.max_size;    front=other.front;    tail=other.tail;    data=new int[max_size];    for (int i = front; i != tail; i = (i + 1) % max_size)    {        data[i]=other.data[i];    }    cout << "拷贝赋值函数" <<endl;      return *this; }/******************主函数*********************/int main(){    queue s1(20);    s1.push(1);    s1.push(2);    s1.show();    // s1.pop();    // s1.pop();    // s1.show();    queue s2=s1;    queue s3;    s3=s2;    return 0;}

 效果图:

二.思维导图


点击全文阅读


本文链接:http://zhangshiyu.com/post/160442.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 神秘人的冷宫废后新帝他是我裙下臣云渺沈烬全书在线
  • 京圈大佬的联姻小玫瑰,又甜又欲(沈旭洲姜云枝),京圈大佬的联姻小玫瑰,又甜又欲
  • 被绝色小姨子陷害,我快顶不住了章节目录_陈精苏若熙无法释怀_小说后续在线阅读_无删减免费完结_
  • 家宴过后,我捉奸了庶妹和我老公无广告_庶妹老公侍卫TOP10_小说后续在线阅读_无删减免费完结_
  • 寝室六个人,她们背着我建五人群必读文_太天真申请书冷笑最新阅读_小说后续在线阅读_无删减免费完结_
  • 开局获得狐仙传承结局+番外_江帆赵雪隐藏剧情_小说后续在线阅读_无删减免费完结_
  • 刀锈春根生,白骨犹温完结全文_卫舟棠棠知意一口气完结_小说后续在线阅读_无删减免费完结_
  • 夫君立筷子定我灾星罪名,我改嫁冷宫皇子后他追悔莫及好评_赵荀孟如安青瑶精心编著_小说后续在线阅读_无删减免费完结_
  • 邻居低素质,而我没素质独家番外_老太太赖皮欣欣超长版_小说后续在线阅读_无删减免费完结_
  • 重生后我转嫁首富瘸腿独子,总裁前夫却疯了一口气看完_妹妹傅云琛沈明辉独家番外_小说后续在线阅读_无删减免费完结_
  • 我拒绝给系花捐款后,全系同学悔疯了在线阅读_小说后续在线阅读_无删减免费完结_
  • 我让位给女友的透视眼竹马,他却说如果能重生再也不来了。虐心反转_玉石林若女友推荐_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1