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、整理思维导图

相关推荐
Adios7942 小时前
设置交集大小至少为2
数据结构·算法·leetcode
程序喵大人4 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
cui_ruicheng4 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
wdfk_prog6 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
晴空了无痕6 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
神明不懂浪漫6 小时前
【第五章】Java中的继承与多态
java·开发语言
神州世通7 小时前
解密企业通信安全防线:Avaya Aura 三层安全架构深度解析
开发语言·php
AC赳赳老秦8 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
qq_2518364578 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端