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

相关推荐
海绵宝宝转agent4 小时前
2026-10-16 4算法+1面经
算法
染指11104 小时前
147.Agent-LangGraph归并函数
开发语言·人工智能·python·langchain·agents
Elastic 中国社区官方博客4 小时前
教程:监控 Java 应用
java·开发语言·数据库·elasticsearch·搜索引擎·全文检索
ShineWinsu4 小时前
对于JavaScript:初识JavaScript以及输入输出
java·开发语言·前端·javascript·css·面试·html
小小安于乱4 小时前
linux中java的springboot程序获取IP地址间歇性10秒卡顿问题
java·开发语言
小poop4 小时前
基础排序算法详解——插入、选择与交换排序
算法·排序算法
青蓝智慧马老师4 小时前
想学数据分析但零基础,正确顺序不是先学 Python
大数据·人工智能·算法
峥嵘life5 小时前
Android16 开机后立即打开相机闪退问题分析与解决总结
android·开发语言·数码相机·策略模式
jeo陽5 小时前
05-数组与冒泡排序:第一个数据结构与经典算法
c语言·数据结构·算法
niucloud-admin5 小时前
NIUCLOUD LITE AI开发文档--命名规范
开发语言·php