首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数据结构有关问题 本人初学者 忘高手解答

2013-01-07 
数据结构问题本人菜鸟 忘高手解答顺序表的插入Status ListInsert_Sq(SqList &L,int i,ElmeType e){if (i1

数据结构问题 本人菜鸟 忘高手解答
顺序表的插入
Status ListInsert_Sq(SqList &L,int i,ElmeType e){
    if (i<1||i>L.length+1)  return ERROR;
    if (L.length==MAXSIZE)  return ERROR;
    for (j=L.length-1;j>=i-1;j--)
        L.elem[j+1]=L.elme[j];
    L.elme[i-1]=e;
    ++L.length;
    return OK;}
书上的算法 为什么for (j=L.length-1;j>=i-1;j--)这句 j=L.length-1呢,怎么想都觉得是j=L.length 啊。。。。。
[解决办法]
L.elme[L.length-1]就是最后一个元素, L.elme[0]是第一个元素
0...L.length-1 一共就是L.length个
[解决办法]
elme[]数组中的下标总比length少1
[解决办法]
意义在于一个个的向后推,L.elem[j+1]=L.elme[j];
elme是从elme[0]开始存储的
L.elme[L.length-1]就是最后的一个元素了
elme若是从elme[1]开始存储的
L.elme[L.length]就是最后的一个元素了
[解决办法]

   for (j=L.length-1;j>=i-1;j--)
        L.elem[j+1]=L.elme[j];
    L.elme[i-1]=e;
//在第i-1个元素和第i个元素之间插入

热点排行