关于#c++#的问题,请各位专家解答!


#include 
#define MaxSize 10 //定义最大长度
typedef int ElemType;
typedef struct{
    ElemType data[MaxSize];  //用静态的"数组"存放数据元素 
    int length;   //顺序表当前长度 
}SqList;             //顺序表类型定义

//基本操作——初始化一个顺序表
void InitList(SqList &L)
{
    for(int i = 0;i < MaxSize;i++)
    {
        L.data[i] = 0;
    }
    L.length =10; //顺序表初始长度为 10
 } 
 
//顺序表的插入
bool ListInsert(SqList &L,int i,int e) //i为位序  ;e为插入元素 
{ 
    if(i<=0 || i>L.length+1) //判断插入位置是否合法 
    {
        return false;
    }
    if(L.length >= MaxSize)  //超出空间 
    {
        return false;
    }
    for(int j=L.length;j>=i;j--)
    {
        L.data[j] = L.data[j-1];
    }
    L.data[i-1] = e;    //在i位置处放e 
    L.length++;
    return true;
} 


int main()
{
    SqList L;
    InitList(L);
    bool ret=ListInsert(L,2,5);
    if(ret)
        printf("增加成功");
    else
        printf("增加失败"); 
    return 0;
 } 

img

修改如下,见注释处,供参考:

#include <stdio.h>
#define MaxSize 10 //定义最大长度
typedef int ElemType;
typedef struct {
    ElemType data[MaxSize];  //用静态的"数组"存放数据元素 
    int length;   //顺序表当前长度 
}SqList;             //顺序表类型定义

//基本操作——初始化一个顺序表
void InitList(SqList& L)
{
    for (int i = 0; i < MaxSize; i++)
    {
        L.data[i] = 0;
    }
    L.length = 0; //顺序表初始长度为 0      修改
    //L.length = 10;//顺序表初始长度为 10
}

//顺序表的插入
bool ListInsert(SqList& L, int i, int e) //i为位序  ;e为插入元素 
{
    if (i <= 0 || i > MaxSize)  //判断插入位置是否合法       修改
    //if (i <= 0 || i > L.length + 1) 
    {
        return false;
    }
    if (L.length >= MaxSize)  //超出空间 
    {
        return false;
    }
    for (int j = L.length; j > i - 1; j--)  //修改
    //for (int j = L.length; j >= i; j--)
    {
        L.data[j] = L.data[j - 1];
    }
    L.data[i - 1] = e;    //在i位置处放e 
    L.length++;
    return true;
}


int main()
{
    SqList L;
    InitList(L);
    bool ret = ListInsert(L, 2, 5);
    if (ret)
        printf("增加成功");
    else
        printf("增加失败");
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7631960
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:怎么用c++写一个自己的头文件?
  • 除此之外, 这篇博客: 一篇文章带你初识C++中的 命名空间的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    命名空间的使用有三种方式:
    加命名空间名称及作用域限定符
    使用using将命名空间中成员引入
    使用using namespace

    //1.使用命名空间名称及作用域限定符
    int main()
    {
    	 printf("%d\n", N::a);
     	 return 0; 
    }
    //2.使用using将命名空间中成员引入
    using N::b;
    int main()
    {
     	printf("%d\n", N::a);
     	printf("%d\n", b);
     	return 0; 
    }
    //3.使用using namespace 
    using namespce N;
    int main()
    { 
    	printf("%d\n", N::a); 
    	printf("%d\n", b); 
    	Add(10, 20);
        return 0;
     }
    

    在C++中我们开头总是写using namespace std; 很多人压根不知道这句话的意思,这里的std就是命名空间,当然这句话的意思就是使用标准命名空间

  • 您还可以看一下 张立铜老师的C++入门基础精讲视频课程中的 数组的介绍小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我很乐意为您解答这些问题。下面是对于c++中指针和引用的区别,以及它们的使用场景和注意事项,多继承和虚继承概念和使用方法的详细解答。

    指针和引用的区别

    指针和引用都是c++中用来传递变量的地址,它们之间的主要区别如下:

    1. 指针在定义时需要使用*号,引用不需要。
    2. 指针可以为空(null),引用不能为空。
    3. 可以对指针进行复制和重新赋值,但不能赋一个引用给另一个引用。
    4. 不能使用delete删除引用,因为引用并不是一个单独的对象。
    5. 指针可以进行算术运算,而引用则不行。

    指针和引用的使用场景和注意事项

    指针和引用都有它们的使用场景和注意事项。一般来说,我们可以根据需要选择适合的方式。

    1. 对于需要返回多个值的情况,可以使用指针来实现。
    2. 对于函数参数需要改变的情况,也可以使用指针或引用来实现。
    3. 对于需要动态分配内存的情况,使用指针更加方便。
    4. 在使用指针的时候,要注意指针是否为空,否则会出现运行时错误。
    5. 在使用引用的时候,要注意引用是否为空,否则会出现运行时错误。
    6. 不要返回指向栈上变量的指针或引用,这样可能会导致不可预知的运行错误。

    下面是c++中多继承和虚继承概念和使用方法的详细解答。

    多继承和虚继承的概念和使用方法

    多继承指的是一个派生类从多个基类继承成员。虚继承是指在多继承的情况下,使用虚基类来避免继承层次中的二义性。

    在使用多继承的时候,需要注意以下几点:

    1. 多重继承会导致继承层次的复杂性,需要仔细考虑。
    2. 在使用多继承的时候,需要注意基类的构造函数和析构函数。
    3. 在使用多重继承的时候,同时继承的基类中不能有方法名相同的情况,除非使用不同作用域解決。

    在使用虚继承的时候,需要注意以下几点:

    1. 虚基类是会被派生类共享的,需要确保它的构造函数只被调用一次。
    2. 当虚基类被多次派生的时候,需要注意嵌套虚拟机构造的顺序。
    3. 当虚基类被多次派生的时候,需要注意虚基类中的成员变量是否被复制了多次。

    下面是使用虚继承的一些代码示例:

    class Animal {
    public:
        Animal() {
            cout<<"Animal Constructor"<<endl;
        }
        ~Animal() {
            cout<<"Animal Destructor"<<endl;
        }
    };
    
    class Mammal: virtual public Animal {
    public:
        Mammal() {
            cout<<"Mammal Constructor"<<endl;
        }
        ~Mammal() {
            cout<<"Mammal Destructor"<<endl;
        }
    };
    
    class Bird: virtual public Animal {
    public:
        Bird() {
            cout<<"Bird Constructor"<<endl;
        }
        ~Bird() {
            cout<<"Bird Destructor"<<endl;
        }
    };
    
    class Bat: public Mammal, public Bird {
    public:
        Bat() {
            cout<<"Bat Constructor"<<endl;
        }
        ~Bat() {
            cout<<"Bat Destructor"<<endl;
        }
    };
    
    int main() {
        Bat b;
        return 0;
    }
    

    以上就是对于c++中指针和引用的区别,以及它们的使用场景和注意事项,多继承和虚继承概念和使用方法的详细解答。希望能对您有所帮助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^