数据结构伪码解释下
#defineLIST_INIT_SLZE100//线性表存储空间的初始分配量#defineLISTINCREMENT10//线性表存储空间的分配量typedefstru...
#define LIST_INIT_SLZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配量
typedef struct{
Elemtype *elem;//存储空间基址
int length;//当前长度
int listsize;//当前 分配的存储容量
}SqList;
--------------------------------------------------
Status InitList_Sq(sqList &L){
//构造一个空的线性表L;
L.elem=(Elemtype *)malloc(LIST_INIT_SLZE *sizeof(ElemTyoe));
if(!L.elem)exit(OVERFLOW);//存储分配失败
L.length=0;//空表长度为0;
L.listsize=LIST_INIT_SLZE;//初始存储容量
return OK;
}//InitList_Sq
------------------------------------------
Status ListInsert_Sq(SqList &L,int i,ElemType e){
//在顺序线性表L中第i个位置之前插入新的元素e;
//i的合法值为1<=i<=ListLength_Sq(L)+1
if(i<1||i>L.length+1)return ERROR;//i值不合法
if(L.length>=L.listsize){//当前存储空间已满,增加分配
newbase=(Elemtype *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)exit(OVERFLOW);//存储分配失败
L.elem=newbase;//新基址
L.listsize+=LISTLNCREMENT;//增加存储容量
}
q=&(L.elem[i-1]);//q为插入位置
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;//插入位置之后的元素后移
*q=e;//插入e
++L.length;//表长增1
return OK;
}//ListInsert_Sq
这是插入的伪码
---------------------------------------
Status ListDelete_Sq(SqList &L,int i,Elemtype &e){
//在顺序线性表L中删除第i个元素,并用e返回其值
//i的合法值为1<=i<=ListLength_Sq(L)
if((i<1)||(i>L.length))return ERROR;//i的值不合法
p=&(L.elem[i-1]);//p为被删除元素的位置
e=*p;//被删除元素的值赋给e
q=L.elem+L.length-1;//表尾元素的位置
for(++p;p<=q;++p)*(p-1)=*p;//被删除元素之后的元素左移
--L.length;//表长减1
return OK;
}//ListDelete_Sq
删除的伪码
----------------------------------
提问1;if(i<1||i>L.length+1)return ERROR,中i的值应该是多少,L.length呢
提问2;if(L.length>=L.listsize),由于上面函数的定义L.length是0,L.listsize是100,如果是这样的话,0怎么大于100使这个语句成立呢
提问3;if((i<1)||(i>L.length))return ERROR,与提问1有点类似
提问4;q=L.elem+L.length-1,这个解释下 展开
#define LISTINCREMENT 10//线性表存储空间的分配量
typedef struct{
Elemtype *elem;//存储空间基址
int length;//当前长度
int listsize;//当前 分配的存储容量
}SqList;
--------------------------------------------------
Status InitList_Sq(sqList &L){
//构造一个空的线性表L;
L.elem=(Elemtype *)malloc(LIST_INIT_SLZE *sizeof(ElemTyoe));
if(!L.elem)exit(OVERFLOW);//存储分配失败
L.length=0;//空表长度为0;
L.listsize=LIST_INIT_SLZE;//初始存储容量
return OK;
}//InitList_Sq
------------------------------------------
Status ListInsert_Sq(SqList &L,int i,ElemType e){
//在顺序线性表L中第i个位置之前插入新的元素e;
//i的合法值为1<=i<=ListLength_Sq(L)+1
if(i<1||i>L.length+1)return ERROR;//i值不合法
if(L.length>=L.listsize){//当前存储空间已满,增加分配
newbase=(Elemtype *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)exit(OVERFLOW);//存储分配失败
L.elem=newbase;//新基址
L.listsize+=LISTLNCREMENT;//增加存储容量
}
q=&(L.elem[i-1]);//q为插入位置
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;//插入位置之后的元素后移
*q=e;//插入e
++L.length;//表长增1
return OK;
}//ListInsert_Sq
这是插入的伪码
---------------------------------------
Status ListDelete_Sq(SqList &L,int i,Elemtype &e){
//在顺序线性表L中删除第i个元素,并用e返回其值
//i的合法值为1<=i<=ListLength_Sq(L)
if((i<1)||(i>L.length))return ERROR;//i的值不合法
p=&(L.elem[i-1]);//p为被删除元素的位置
e=*p;//被删除元素的值赋给e
q=L.elem+L.length-1;//表尾元素的位置
for(++p;p<=q;++p)*(p-1)=*p;//被删除元素之后的元素左移
--L.length;//表长减1
return OK;
}//ListDelete_Sq
删除的伪码
----------------------------------
提问1;if(i<1||i>L.length+1)return ERROR,中i的值应该是多少,L.length呢
提问2;if(L.length>=L.listsize),由于上面函数的定义L.length是0,L.listsize是100,如果是这样的话,0怎么大于100使这个语句成立呢
提问3;if((i<1)||(i>L.length))return ERROR,与提问1有点类似
提问4;q=L.elem+L.length-1,这个解释下 展开
展开全部
提问1;if(i<1||i>L.length+1)return ERROR,中i的值应该是多少,L.length呢
答:(因为是在顺序线性表L中第i个位置之前插入新的元素e;
所以i<1或者i>L.length+1是不合法的,这样的位置不存在。
i的值应该介于1到L.length+1之间,才有插入位置)
i的值可以取1到L.length+1的任意值。
L.length就是顺序表的长度,顺序表有几个元素,它就是几,是动态的。
提问2;if(L.length>=L.listsize),由于上面函数的定义L.length是0,L.listsize是100,如果是这样的话,0怎么大于100使这个语句成立呢
答:每插入一个元素,都会执行这一句(在插入函数里面的)
++L.length;//表长增1
当你插入101个元素,L.length就比100大了。
提问3;if((i<1)||(i>L.length))return ERROR,与提问1有点类似
答:((i<1)||(i>L.length))时,没有这样的元素存在,当然就不能执行删除这个元素的操作,所以error.
提问4;q=L.elem+L.length-1,这个解释下
答:L.elem是存储空间首地址,也就是第1个元素所在的位置,而表中一共有L.length个元素,所以(L.elem+L.length-1)就是最后一个元素的位置。
答:(因为是在顺序线性表L中第i个位置之前插入新的元素e;
所以i<1或者i>L.length+1是不合法的,这样的位置不存在。
i的值应该介于1到L.length+1之间,才有插入位置)
i的值可以取1到L.length+1的任意值。
L.length就是顺序表的长度,顺序表有几个元素,它就是几,是动态的。
提问2;if(L.length>=L.listsize),由于上面函数的定义L.length是0,L.listsize是100,如果是这样的话,0怎么大于100使这个语句成立呢
答:每插入一个元素,都会执行这一句(在插入函数里面的)
++L.length;//表长增1
当你插入101个元素,L.length就比100大了。
提问3;if((i<1)||(i>L.length))return ERROR,与提问1有点类似
答:((i<1)||(i>L.length))时,没有这样的元素存在,当然就不能执行删除这个元素的操作,所以error.
提问4;q=L.elem+L.length-1,这个解释下
答:L.elem是存储空间首地址,也就是第1个元素所在的位置,而表中一共有L.length个元素,所以(L.elem+L.length-1)就是最后一个元素的位置。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询