4.2作业

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

#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类型的字符数组,对该数组访问越界时抛出异常,并做处理。

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

相关推荐

  1. 作业40 自定义函数

    2024-04-03 11:02:02       29 阅读
  2. 作业..........

    2024-04-03 11:02:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 11:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 11:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 11:02:02       82 阅读
  4. Python语言-面向对象

    2024-04-03 11:02:02       91 阅读

热门阅读

  1. 【蓝桥杯第十一届省赛B】(部分详解)

    2024-04-03 11:02:02       36 阅读
  2. C++经典面试题目(二十)

    2024-04-03 11:02:02       32 阅读
  3. 【BUG】vue中@change时间传值丢失问题

    2024-04-03 11:02:02       36 阅读
  4. 什么是原生IP和广播IP

    2024-04-03 11:02:02       34 阅读
  5. 【python】网络爬虫基础

    2024-04-03 11:02:02       35 阅读
  6. STC8H8K64U 学习笔记 - 与上位机通信

    2024-04-03 11:02:02       28 阅读
  7. 深入了解Flutter中Overlay的介绍以及使用

    2024-04-03 11:02:02       34 阅读
  8. 【linux】常用命令及选项含义+ 英文全称大全

    2024-04-03 11:02:02       42 阅读