
1.在第i个元素之前插入元素数据e:
while(p && j<i-1){p=p->next;++j}
while循环中找到第i-1个结点,此时p代表第i-1个结点的地址。仅判断p不为null。不需要判断p->next,p->next是否为null与需求无关,因为p->next为null,则在该链表最后加入一个结点,若不为null,则在链表中间的某处加入一个结点。
若刚好最后一个结点为第i-1个结点,此时第i个元素为链表长度+1个结点,第i-1个结点的指针域为null,(即在链表最后插入一个数据域为e的结点,p->next为null),则插入完成后,刚插入的元素的指针域为null。

if(!p||j>i-1)return ERROR;
if条件判断,若p为null或者i的值小于1,返回ERROR;\

2.将第i个数据元素删除
while(p->next && j<i-1){p=p->next;++j}
while循环中找到第i-1个结点,此时p代表第i-1个结点的地址。
若刚好最后一个结点为第i-1个结点,此时第i个元素为链表长度+1个结点,第i-1个结点的指针域为null,则删除无意义。
所以要判断p->next是否为null,因为删除的是第i个数据元素,而p->next代表的是第i个数据元素的地址。
if((!p->next )||j>i-1)return ERROR;
判断若第i个元素的地址为空,或者i的值小于1,返回ERROR
本文详细介绍了如何在链表中插入元素,通过while循环找到第i-1个节点并进行插入操作,同时讨论了删除第i个元素的情况,强调了在不同条件下判断条件的重要性。
1463

被折叠的 条评论
为什么被折叠?



