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

相关推荐
寻星探路20 分钟前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly2024062 小时前
Bootstrap 警告框
开发语言
2601_949146532 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
你撅嘴真丑3 小时前
第九章-数字三角形
算法
曹牧3 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
在路上看风景3 小时前
19. 成员初始化列表和初始化对象
c++
KYGALYX3 小时前
服务异步通信
开发语言·后端·微服务·ruby
uesowys3 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
zmzb01033 小时前
C++课后习题训练记录Day98
开发语言·c++
ValhallaCoder3 小时前
hot100-二叉树I
数据结构·python·算法·二叉树