数据结构2-关于链表的插入算法自己的思考

链表的插入

初始条件:1.带有头结点的链表 2.插入位置 i 3.插入的节点Node

基本操作:假设p指向某个节点 q指向被插入的节点 则可以执行的是在p之后插入节点 

初始化:1.p=L 指向头结点 2.j=1

寻找第i-1个结点:

    while(j

      p=p->next;

      j++;
    }

这样最终指向的是第i-1个结点;

i的不同情况:1.i<1 直接跳出 2.1<=i<=length 可以正常执行 3.i=length+1 在链表末尾插入数据 4.i>length+1 出现空指针异常

杜绝最后一种情况 :加入判断条件:p不为空

循环改为:

    while(p && j

      p=p->next;

      j++;
    }

在判断中剔除 1 与 4 的情况 

    if(!p || j>i){

      return ERROR;
    }

操作:q->next=p->next

   p->next=q;

 

你可能感兴趣的:(数据结构2-关于链表的插入算法自己的思考)