2024.9.25 作业和思维导图

news2024/12/26 12:12:08

#include <iostream>
#include <stdexcept>
using namespace std;

class My_stack
{
private:
    int * data; //栈空间
    int capacity;
    int top;    //栈顶元素的下标
protected:

public:
    /******************成员函数*************/
    //构造函数
    My_stack(int c = 10):capacity(c),top(-1){data = new int[capacity];cout<<"构造函数"<<endl;}

    //析构函数
    ~My_stack(){delete []data;cout<<"析构函数"<<endl;}
    //operator= 赋值给容器适配器
    My_stack & operator=(const My_stack &R)
    {
        this->data = R.data;
        this->top = R.top;
        return *this;
    }
    /*************元素访问******************/
    //My_top   访问栈顶元素
    int My_top()
    {
        cout<<"My_top   访问栈顶元素"<<endl;
        if (this->top < 0)
        {
            throw std::underflow_error("栈为空"); // 栈空
        }
        return data[this->top];
    }
    //show_top   显示栈顶元素
    void show_top()
    {
        cout<<"show_top   显示栈顶元素"<<endl;
        if (top < 0)
        {
            throw std::underflow_error("栈为空"); // 栈空
        }
        cout<<data[top]<<endl;
    }
    void show()
    {
        cout<<"show   显示栈内所有元素"<<endl;
        if (this->top < 0)
        {
            throw std::underflow_error("栈为空"); // 栈空
        }
        for(int i =0;i<=top;i++)
        {
            cout<<data[i]<<" ";
        }
        cout<<endl;
    }
    /****************容量******************/
    //empty
    bool empty() const
    {
        return top < 0; // 检查栈是否为空
    }
    //size
    int size() const
    {
        return top + 1; // 返回栈的大小
    }

    /***************修改器******************/
    //push
    void push(int value)
    {
        if (top >= capacity - 1)
        {
            throw std::overflow_error("栈溢出"); // 栈满
        }
        data[++top] = value; // 入栈
    }
    //pop
    void pop()
    {
        if (top < 0)
        {
            throw std::underflow_error("栈为空"); // 栈空
        }
        --top; // 出栈
    }
    //swap
    void swap(My_stack &other)
    {
        //如果容量不足就报错
        if(this->top>other.capacity||other.top>this->capacity)
        {
            throw std::underflow_error("栈数据交换失败"); // 栈空
        }
        for(int i = 0;i<=top;i++)
        {
            int temp = this->data[i];
            this->data[i] = other.data[i];
            other.data[i] = temp;
        }
        int temp = this->top;
        this->top = other.top;
        other.top = temp;
    }

};


int main()
{
    My_stack s1;
    s1.push(10);
    s1.push(4);
    s1.push(6);
    s1.push(8);
    s1.My_top();
    s1.show_top();
    s1.show();
    return 0;
}

队列

#include <iostream>
#include <stdexcept>
using namespace std;

class My_queue
{
private:
    int* data;      // 队列空间
    int capacity;   // 队列容量
    int front;      // 队头元素的下标
    int rear;       // 队尾元素的下标
    int count;      // 当前元素数量

public:
    /******************成员函数*************/
    // 构造函数
    My_queue(int c = 10) : capacity(c), front(0), rear(-1), count(0)
    {
        data = new int[capacity];
        cout << "构造函数" << endl;
    }

    // 析构函数
    ~My_queue()
    {
        delete[] data;
        cout << "析构函数" << endl;
    }

    // 赋值运算符重载
    My_queue& operator=(const My_queue& R)
    {
        if (this != &R)
        {
            delete[] data; // 释放旧内存
            capacity = R.capacity;
            front = R.front;
            rear = R.rear;
            count = R.count;
            data = new int[capacity];
            for (int i = 0; i < count; i++)
            {
                data[i] = R.data[(front + i) % capacity];
            }
        }
        return *this;
    }

    /*************元素访问******************/
    // 队头元素
    int My_front()
    {
        cout << "My_front   访问队头元素" << endl;
        if (count == 0)
        {
            throw std::underflow_error("队列为空"); // 队列空
        }
        return data[front];
    }

    // 显示队头元素
    void show_front()
    {
        cout << "show_front   显示队头元素" << endl;
        if (count == 0)
        {
            throw std::underflow_error("队列为空"); // 队列空
        }
        cout << data[front] << endl;
    }

    // 显示所有元素
    void show()
    {
        cout << "show   显示队列内所有元素" << endl;
        if (count == 0)
        {
            throw std::underflow_error("队列为空"); // 队列空
        }
        for (int i = 0; i < count; i++)
        {
            cout << data[(front + i) % capacity] << " ";
        }
        cout << endl;
    }

    /****************容量******************/
    // empty
    bool empty() const
    {
        return count == 0; // 检查队列是否为空
    }

    // size
    int size() const
    {
        return count; // 返回队列的大小
    }

    /***************修改器******************/
    // 入队
    void enqueue(int value)
    {
        if (count >= capacity)
        {
            throw std::overflow_error("队列溢出"); // 队列满
        }
        rear = (rear + 1) % capacity; // 循环队列
        data[rear] = value; // 入队
        count++;
    }

    // 出队
    void dequeue()
    {
        if (count == 0)
        {
            throw std::underflow_error("队列为空"); // 队列空
        }
        front = (front + 1) % capacity; // 循环队列
        count--;
    }
};

int main()
{
    My_queue q;
    q.enqueue(10);
    q.enqueue(4);
    q.enqueue(6);
    q.enqueue(8);
    q.My_front();
    q.show_front();
    q.show();

    q.dequeue(); // 出队
    q.show(); // 显示队列内容

    return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2164862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS中的事件和DOM操作

一、事件[重要] 1、 事件介绍 事件: 就是发生在浏览器(页面)上一件事,键盘事件,鼠标事件,表单事件,加载事件等等 2、 事件绑定方式 事件要想发生,就得将事件和标签先绑定(确定哪个标签发生什么事情,又有什么响应) 一个完整的事件有三部分 事件源(标签),哪里发出的事. 什么事(…

【DAY20240925】随机梯度下降:高效优化背后的原理与进阶策略

文章目录 前言随机梯度下降SGDMini-batch 随机梯度下降常见优化算法的改进版本 前言 梯度下降更新的通用形式&#xff1a; 论文中类似的表达形式&#xff0c;都表示根据 损失函数对这些参数的梯度 进行更新参数。梯度值较大时&#xff0c;说明当前控制参数对损失有较大的影响…

排序个人总结

插入排序 思路&#xff1b;定义 i 和 j&#xff0c;默认 i 前面的数都是有序的&#xff0c;j 定义为 i 的前一个数&#xff0c;把 i 的值给tmp&#xff0c;tmp与j对应的值进行比较&#xff0c;如果arr[j] > tmp,将arr[j] (大的数前移一位)&#xff0c;如下图 代码&#xf…

【亲子英语】英语故事有声绘本分享

文章目录 一、视觉与听觉的双重盛宴二、语言学习的最佳伙伴三、亲子共读的温馨时光四、适用人群广泛&#xff0c;随时随地学习五、获取方式 在这个快速发展的时代&#xff0c;英语学习已经不再局限于课本和课堂。特别是对于活泼好动的孩子们来说&#xff0c;一种既有趣又高效的…

open-resty 服务安装jwt插件

作者&#xff1a;程序那点事儿 日期&#xff1a;2023/11/16 22:07 lua-resty-jwt 插件 如果想使用Lua识别用户令牌&#xff0c;我们需要引入lua-resty-jwt模块&#xff0c;是用于 ngx_lua 和 LuaJIT 的 Lua 实现库&#xff0c;在该模块能实现Jwt令牌生成、Jwt令牌校验。 下载…

9.25作业

手动实现队列 代码如下 MyQueue.h #ifndef MYQUEUE_H #define MYQUEUE_H #include <iostream> #include <cstring> using namespace std;class Queue{ private:char* data; //字符串数据int len; //当前数量int size; //最大容量int front; //头索引int …

uboot — uboot命令的使用

uboot的命令繁多&#xff0c;下文只对工作中常用到的命令进行记录&#xff0c;其余命令待用到时再查查资料也不迟 一、环境变量操作命令 1、printenv 打印环境变量 2、setenv 修改环境变量/新建环境变量 3、saveenv 保存环境变量/删除环境变量&#xff08;给环境变量赋空值…

巴特沃斯滤波器的MATLAB实现

一、引言 巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09;&#xff0c;是滤波器的一种&#xff0c;其主要特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯蒂芬巴特沃斯(StephenButterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的…

基于vue框架的村务综合服务系统8p0l3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;居民,村委,支部,公告信息,通讯录,重点户 开题报告内容 基于Vue框架的村务综合服务系统开题报告 一、引言 随着信息化时代的深入发展&#xff0c;农村社会治理模式正经历着深刻的变革。传统村务管理方式往往存在信息不对称、效率低下、…

【SpringBoot整合Redis测试Redis集群案例】

1、第一步&#xff0c;创建springboot项目&#xff0c;并导入依赖 如图&#xff0c;创建项目遇到的第一个问题就是&#xff0c;当type选择maven&#xff0c;jdk选择1.8时&#xff0c;java部分没办法选择1.8的版本&#xff0c;这怎么办呢&#xff1f; 原因&#xff1a;搜了一下…

【C++ Primer Plus习题】17.7

问题: 解答: #include <iostream> #include <vector> #include <string> #include <fstream> #include <algorithm>using namespace std;const int LIMIT 50;void ShowStr(const string& str); void GetStrs(ifstream& fin, vector<…

【多线程】面试高频考点!JUC常见类的详细总结,建议收藏!

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;多线程 / javaEE初阶 JUC是“Java Util Concurrency”的缩写&#xff0c;指的是Java并发工具包&#xff0c;它位于java.util.concurrent包及其子包中。JUC包提供了大量用于构建并发应用程序的工具和…

简历信息提取系统源码分享

简历信息提取检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

C++之stack 和 queue

目录 前言 1.stack的介绍和使用 1.1 stack的介绍 1.2 stack的使用 1.3 stack 的模拟 2. queue的介绍和使用 2.1 queue的介绍 2.2 queue的使用 2.3 queue的模拟 3.适配器 3.1 什么是适配器 3.2 STL标准库中stack和queue的底层结构 3.3 deque 的介绍&#xff08;了解&…

每日OJ题_牛客_ 腐烂的苹果_多源BFS_C++_Java

目录 牛客_腐烂的苹果&#xff08;多源 BFS&#xff09; 题目解析 C代码 Java代码 牛客_腐烂的苹果&#xff08;多源 BFS&#xff09; 腐烂的苹果_牛客题霸_牛客网 题目解析 多源 BFS 问题&#xff0c;固定套路&#xff0c;BFS学习 &#xff1a;Offer必备算法28_多源BFS_…

【C++算法】哈希表

哈希表介绍&#xff1a; 1.哈希表是什么&#xff1f; 存储数据的容器 2.哈希表有什么用&#xff1f; “快速”查找某个元素——O(N) 3.什么时候使用哈希表&#xff1f; 频繁的查找某一个数的时候&#xff0c;频繁也可以使用二分&#xff08;有序&#xff09; 4.怎么用哈希表&…

cadence多版本启动问题

一、问题描述 电脑上安装了 17.4 和16.6两个版本打开16.6时会弹出 **原因&#xff1a;**使用Allegro设计PCB时&#xff0c;当关闭软件后&#xff0c;再次打开Allegro软件&#xff0c;打开的文件为上一次操作过的.brd文件&#xff0c;这是Allegro软件安装的默认设置。 二、解…

单体项目中定时任务的实现-详细教程

单体项目中定时任务的实现 在企业开发中&#xff0c;遇到的项目无非就两种&#xff0c;单体项目和分布式项目 单体项目中实现定时任务有以下几种方式 1. 使用Timer实现定时任务&#xff08;不常用&#xff09; 1.1、JDK1.3推出的定时任务实现工具类java.util.Timer 1.2、API…

学习MRI处理过程中搜到的宝藏网站

今天浏览网页查到了一些宝藏网站&#xff0c;正好记录一下&#xff0c;后面搜到好东东再接着填充&#xff0c;方便查阅~ &#xff08;1&#xff09;牛人网站 这个网站是在搜集seed关键词时发现的&#xff0c;用pdf文档记录&#xff0c;可下载查阅&#xff0c;条理清晰&#xf…

Python | Leetcode Python题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; class Solution:def minMutation(self, start: str, end: str, bank: List[str]) -> int:if start end:return 0def diffOne(s: str, t: str) -> bool:return sum(x ! y for x, y in zip(s, t)) 1m len(bank)adj [[] for _ in ra…