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

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

23 人参与  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://m.zhangshiyu.com/post/160442.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

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

最新文章

  • ***宝藏文_芝芝玲玲贺云章最新阅读_小说后续在线阅读_无删减免费完结_
  • 靠弹幕知道父母的兄弟穷养计划后,我成功摆脱结局_小说后续在线阅读_无删减免费完结_
  • (傅砚臣盛书意)傅砚臣盛书意(盛书意傅砚臣)无套路无弹窗全部章节列表
  • 救命!我穿到修仙界当催生员了:结局+番外(程诺诺)小说免费更新在线阅读_救命!我穿到修仙界当催生员了:结局+番外免费全文阅读笔趣阁(程诺诺)
  • 为讨情人欢心,老公将怀孕八个月的我打到流产完整文本_顾裴司白月光顾董完结版_小说后续在线阅读_无删减免费完结_
  • 祝沉风苏轻寰附加(祝沉风苏轻寰)(苏轻寰祝沉风)全本浏览阅读连载中
  • 谢师宴上,我当众撕毁儿子清北录取通知书热门_陈茹通知书贺聪内容精选_小说后续在线阅读_无删减免费完结_
  • 穿书六零:我采药日进斗金小说完本章节前文+全篇阅读(徐知夏陆定北)连载中
  • 燕临渊楚明微:结局+番外免费品鉴楚明微燕临渊:结局+番外评价五颗星
  • 独家穿书六零:我采药日进斗金小说小说大结局(徐知夏陆定北)全篇在线下载阅读
  • 林小婉谢成周(她的心彻底变成死水,输得彻头彻尾)小说免费阅读无弹窗完整版_(她的心彻底变成死水,输得彻头彻尾)林小婉谢成周最新章节列表笔趣阁
  • 霓月读者推荐_小说后续在线阅读_无删减免费完结_

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

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