请各位帮我康康代码出现了什么问题,一运行就停止工作

这篇博客主要讨论了一段C++代码,该代码试图模拟动态数组的顺序表操作,包括插入、删除和查找元素。然而,代码在运行时遇到了'程序.exe已停止工作'的错误。错误可能出现在插入、删除或查找函数中,可能是由于边界检查不充分或者数组越界导致的。为了解决这个问题,需要仔细检查代码中的逻辑和边界条件,确保所有的操作都在有效的数组范围内进行。
摘要由CSDN通过智能技术生成

模拟动态数组的顺序表

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
template<typename t>
class link{
public:
    t obj[LINK_MAXN]={NULL};//所有元素
    t len=0;//长度
    void add(link &li,t obj,int place)//插入元素
    {
        if(place<0||place>=li.len)return;
        if(li.len>=LINK_MAXN)return;
        li.len++;
        for(int i=place;i<li.len-1;i++)
            li.obj[i+1]=li.obj[i];
        li.obj[place]=obj;
    }
    void del(link &li,t obj=NULL,int place=NULL)//删除元素(可使用位置删除或元素删除)
    {
        if(obj==NULL&&place==NULL)
            return;
        int oll= -1;
        if(place==NULL){
        for(int i=0;i<li.len;i++)
            if(li.obj[i]==obj)
            {oll=i;break;}
        if(oll<0)
            return;
        }
        else{
            oll=place;
            if(place>LINK_MAXN||place<0)
                return;
        }
        li.len--;
        for(int i=oll;i<li.len-1;i++)
            li.obj[i]=li.obj[i+1];
    }
    void change(link &li,t yb,t main_)//更改元素
    {
        int place= -1;
        for(int i=0;i<li.len;i++)
            if(li.obj[i]==yb)
            {place=i;break;}
        if(place<0)
            return;
        else
            li.obj[place]=main_;
    }
    long int findf(link li,int obj)//查找元素
    {
        for(int i=0;i<li.len;i++)
            if(li.obj[i]==obj)
                return i;
        return NULL;
    }
    void print(link l)//打印顺序表
    {
        for(int i=0;i<l.len;i++)
            printf("%d ",l.obj[i]);
        printf("\b \b\n");
        system("pause");
    }
};
int main(){
    link<int> a1;
    a1.add(a1,13,0);
    a1.add(a1,13,1);
    a1.del(a1,13);
    a1.print(a1);
    return 0;
}

就是以上这段代码,一直试都是显示“程序.exe已停止工作”,麻烦各位大佬帮我看看哪出了问题,谢谢! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值