4.2作业

1、使用模板类,实现顺序栈

cpp 复制代码
#include <iostream>

using namespace std;

template<typename T>
class Stack
{
    T *data;
    T top;
    T size;
public:
    //构造函数
    Stack():size(7)
    {
        data = new T[size];
        top = -1;
        cout << "Stack的无参构造" << endl;
    }
    //析构函数
    ~Stack()
    {
        delete []data;
        cout << "Stack的析构函数" << endl;
    }
    //判空
    bool stackempty();
    //判满
    bool stackfull();
    //入栈
    void push(T data);
    //出栈
    void pop();
    //遍历
    void show();
};

//判空
template<typename T>
bool Stack<T>::stackempty()
{
    return (this->top == -1);
}

//判满
template<typename T>
bool Stack<T>::stackfull()
{
    return (this->top == this->size-1);
}

//入栈
template<typename T>
void Stack<T>::push(T data)
{
    if(stackfull())
    {
        cout << "栈已满" << endl;
        return;
    }
    this->top++;
    this->data[this->top] = data;
}

//出栈
template<typename T>
void Stack<T>::pop()
{
    if(stackempty())
    {
        cout << "栈为空" << endl;
        return;
    }
    this->top--;
}

//遍历
template<typename T>
void Stack<T>::show()
{
    if(stackempty())
    {
        cout << "栈为空" << endl;
        return;
    }
    for(int i=this->top;i>=0;i--)
    {
        cout << this->data[i] << "   " ;
    }
    cout << endl;
}

int main()
{
    Stack <int>s;
    //判空测试
    cout << s.stackempty() << endl;

    s.push(25);
    s.push(77);
    s.push(12);
    s.push(46);
    //入栈测试
    s.push(81);
    s.push(3);

    s.show();
    //出栈测试
    s.pop();
    s.pop();

    //判满测试
    cout << s.stackfull() << endl;

    //遍历测试
    s.show();
    return 0;
}

2、写一个char类型的字符数组,对该数组访问越界时抛出异常,并做处理。

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

void fun(char arr[],int i)
{
    int len = strlen(arr);
    if(i>len)
    {
        throw char(1);
    }
    if(i<0)
    {
        throw char(2);
    }
}

int main()
{
    char arr[20] = "";
    int i = 0;
    cout << "输入下标" ;
    cin >> i;
    try
    {
        fun(arr,i);
    }
    catch (char res)
    {
        if(res == 1)
        {
            cout << "超过数组大小" << endl;
        }
        else if(res == 2)
        {
            cout << "输入的值小于0" << endl;
        }
    }
    return 0;
}

3、整理思维导图

相关推荐
皮卡蛋炒饭.几秒前
宽搜bfs与深搜dfs
算法·宽度优先
yuuki2332334 分钟前
【C++】掌握list:C++链表容器的核心奥秘
c++·后端·链表·list
Coder_Boy_5 分钟前
基于SpringAI的智能AIOps项目:部署相关容器化部署管理技术图解版
人工智能·spring boot·算法·贪心算法·aiops
王哈哈^_^6 分钟前
【完整源码+数据集】道路拥塞数据集,yolo道路拥塞检测数据集 8921 张,交通拥堵识别数据集,路口拥塞识别系统实战教程
深度学习·算法·yolo·目标检测·计算机视觉·分类·毕业设计
Chen不旧7 分钟前
Java模拟死锁
java·开发语言·synchronized·reentrantlock·死锁
菩提树下的凡夫16 分钟前
如何将python的程序py文件转换为exe程序
开发语言·python
萧曵 丶18 分钟前
Java 安全的单例模式详解
java·开发语言·单例模式
leoufung23 分钟前
LeetCode 64. Minimum Path Sum 动态规划详解
算法·leetcode·动态规划
superman超哥23 分钟前
Rust 错误处理模式:Result、?运算符与 anyhow 的最佳实践
开发语言·后端·rust·运算符·anyhow·rust 错误处理
lly20240624 分钟前
Web 品质样式表
开发语言