鱼C论坛

 找回密码
 立即注册
查看: 3334|回复: 2

[已解决]新手求助

[复制链接]
发表于 2017-7-21 18:15:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
新手 看了本书大话数据结构 它里面讲了顺序线性表第i个位置插入一个新的数据元素 源代码如下

/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L), */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */
Status ListInsert(SqList *L,int i,ElemType e)
{
        int k;
        if (L->length==MAXSIZE)  /* 顺序线性表已经满 */
                return ERROR;
        if (i<1 || i>L->length+1)/* 当i比第一位置小或者比最后一位置后一位置还要大时 */
                return ERROR;

        if (i<=L->length)        /* 若插入数据位置不在表尾 */
        {
                for(k=L->length-1;k>=i-1;k--)  /* 将要插入位置之后的数据元素向后移动一位 */
                        L->data[k+1]=L->data[k];
        }
        L->data[i-1]=e;          /* 将新元素插入 */
        L->length++;

        return OK;
}
俺又几个疑问它这个L->data[k+1] 这个数据不是原来木有的吗 ?
  如果它这个成立的话那删除操作是不是从L->data[k]开始遍历就OK了?
最佳答案
2017-7-31 14:14:01
如果L->length表示的是链表的长度,那么因为数组的下标是从0开始的,所以最后一个元素的下标应该为L->length-1,所以L->data[k+1]其实是空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-21 18:48:51 | 显示全部楼层
是俺的问题太简单了吗 求大腿解个惑吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-31 14:14:01 | 显示全部楼层    本楼为最佳答案   
如果L->length表示的是链表的长度,那么因为数组的下标是从0开始的,所以最后一个元素的下标应该为L->length-1,所以L->data[k+1]其实是空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表