C++ 2024-4-2 作业

1.模板类实现顺序栈

cpp 复制代码
#include <iostream>
#define MAX 8
using namespace std;
template<typename T>
class stack
{
    T data[MAX];
    int top;
public:
    stack():top(-1){}
    bool empty_stack();
    bool full_stack();
    void push_stack(T data);
    void pop_stack();
    void show();
};

template<typename T>
bool stack<T>::empty_stack()
{
    return top == -1;
}

template<typename T>
bool stack<T>::full_stack()
{
    return top == MAX-1;
}

template<typename T>
void stack<T>::push_stack(T data)
{
    if(full_stack())
    {
        return;
    }
    top++;
    this->data[top] = data;
    return;
}

template<typename T>
void stack<T>::pop_stack()
{
    if(empty_stack())
    {
        cout<<"栈为空"<<endl;
        return;
    }
    cout<<"出栈的元素为"<<data[top]<<endl;
    top--;
    return;
}

template<typename T>
void stack<T>::show()
{
    if(empty_stack())
    {
        cout<<"栈为空"<<endl;
        return;
    }
    for(int i=0;i<=top;i++)
    {
        cout<<data[i];
    }
    cout<<endl;
}

int main()
{
    stack<int>s1;
    s1.push_stack(1);
    s1.push_stack(2);
    s1.push_stack(3);
    s1.push_stack(4);
    s1.push_stack(5);
    s1.push_stack(6);
    s1.push_stack(7);
    s1.push_stack(8);
    s1.show();
    s1.pop_stack();
    s1.show();
    cout<<s1.full_stack()<<endl;
    return 0;
}

2. char类型的字符数组,实现对数组越界的抛出异常并处理

cpp 复制代码
#include <iostream>
#include <cstring>
using namespace std;
void arr_size(const char *p,int size)
{
    int len = strlen(p);//5
    if(size>=len)
    {
        throw int(0);
    }
}
int main()
{
    char arr[6] = "hello";
    int size = 4;
    int size2 = 8;
    try
    {
        arr_size(arr,size);

    } catch (int ret)
    {
        if(ret==0)
        {
            cout<<"数组越界"<<endl;
        }
    }

    try
    {
        arr_size(arr,size2);

    } catch (int ret)
    {
        if(ret==0)
        {
            cout<<"数组越界"<<endl;
        }
    }
    cout<<arr[size]<<endl;
    cout<<arr[size2]<<endl;

    return 0;
}
相关推荐
QQ_4376643141 分钟前
分布式RPC网络框架
网络·c++·分布式·rpc
廋到被风吹走1 分钟前
【JDK版本】JDK1.8相比JDK1.7 语言特性之函数式编程
java·开发语言·python
y***61312 分钟前
PHP操作redis
开发语言·redis·php
fire-flyer2 分钟前
Reactor Context 详解
java·开发语言
fy zs4 分钟前
Linux线程互斥与同步
linux·c++
CoderYanger5 分钟前
动态规划算法-简单多状态dp问题:14.粉刷房子
开发语言·算法·leetcode·动态规划·1024程序员节
张张努力变强7 分钟前
二叉树——精选题目,体验递归的暴力美学!
c语言·数据结构·算法
momo小菜pa8 分钟前
C#--BindingList
开发语言·c#
老王熬夜敲代码9 分钟前
万能引用、完美转发
c++·笔记
Rinai_R11 分钟前
Golang 垃圾回收器执行链路分析
开发语言·后端·golang