| 
 | 
 
1鱼币 
小甲鱼老师说操作结果是在第i个节点之前插入新元素 
这是小甲鱼老师的 代码 
/*初始条件,顺序线性表已经存在,1<=i<=ListLength(L)*/ 
/*操作结果,在L中第i个位置之前插入新元素e,L的长度+1*/ 
 
Status ListInsert(LinkList *L,int i,ElemType e) 
{ 
        int j; 
        LinkList p,s; 
 
        p=*L; 
        j=1; 
 
        while(p && j<i) 
        { 
                p=p->next; 
                j++; 
        } 
 
        if( !p || j>i) 
        { 
                return ERROR; 
        } 
        s=(LinkList)malloc(sizeof(Node)); 
        s-data = e; 
 
        s->next = p->next; 
        p->next = s; 
 
        return OK; 
} 
我感觉应该吧while中的j<i改成j<i-1 
这样才是插在第i个元素之前 
求解答 
 
其实取决于 这个链表的序号i 是从0开始还是从1开始 
如果头结点的数据域是个空节点(大部分链表都是这么做 表明头结点的特殊性) 那么序号就是从0开始 
那么p刚好是第i个节点 
 s->next = p->next; 
 p->next = s; 
这句明显就是在p的节点和p的后继节点之间 插入一个s节点 
按函数说明来说 那就是第i个节点之后插入一个节点 
 
 
 |   
 
 
最佳答案
查看完整内容 
其实取决于 这个链表的序号i 是从0开始还是从1开始
如果头结点的数据域是个空节点(大部分链表都是这么做 表明头结点的特殊性) 那么序号就是从0开始
那么p刚好是第i个节点
 s->next = p->next;
 p->next = s;
这句明显就是在p的节点和p的后继节点之间 插入一个s节点
按函数说明来说 那就是第i个节点之后插入一个节点 
 
 
 
 
 
 
 |