上课问题:如何保证线表存储随时都能插入?

今天老师数据结构课,上课问了这个问题,在线性表顺序存储的时候,如何保证随时都能插入?顺序表插入代码如下:

Status ListInsert_Sq(Sqlist &L,int i,ElemType e){
    
    
	if(i<1 || i>Length+1) return ERROR;
	if(L.Length >= MAXSIZE) return ERROR;
	for(int j= L.length-1;j>=i-1;j--)
		L.elem[j+1]= L.elem[j];
	++L.length;
	return OK;
}

问题解决

分为两步,主要是针对ERROR发生的错误进行解决

1、ERROR1:i<1 || i> Length+1

如果i<1 那么就让他 i = 1
如果i>Length + 1 那么就让他Length+1

2、ERROR2:L.length>=MAXSIZE

这个时候用c语言的realloc,这个函数就是在数组原有基础上再增长。malloc与c++的new需要重新倒腾数组,因此realloc比较好。

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/123176520