如果链表只有一个节点这个代码也好使

查找不一定会影响到我指向第一个节点的指针,所以传一级指针

如果一个函数遍历两次不新建一个指针的话原指针丢失。不能第二次遍历pos给定了一个节点就说明链表不为空(如果pos是NULL那空在哪啊)所以断言链表不为空若pos是第一个节点prev可能一直往下走,出现对空指针解引用的情况,pos是最后一个节点就没事

指定位置删除用不到头结点,只用pos和pos下一个节点

第二种方法错了可以用定一个变量把pos->next存起来

删除pos可能是头节点就意味着头节点可能改变,用二级指针

测一测满足吗

若pos是第一个节点prev可能一直往下走,出现对空指针解引用的情况

测测头尾中的删除

头删方法的调用要用到二级指针所以删除pos要用二级指针

若pos等于3del=4,让pos-》next指针指向del->next指针,可以释放del置为空可以

销毁的话先把下一个节点存起来然后再销毁这个节点pcur就可以走向下一个节点位置再让next走,

pcur不为空就把pcur释放掉

pcur走直到value定义一个prev作为pcur的前一个结点prev要指向pcur->next然后释放pcur还要有next存下一个节点,然后pcur走向next位置判断pcur是不是value不是就继续走走之前next先走prev继续走pcur为空了就实现了

另一种思路建立一个新链表Head Tail都赋值NULL,再来一个变量遍历我的原链表pcur指向第一个节点找不为value的节点进行新链表尾插,分两种情况,开始新链表是NULL尾插的话既是头节点也是尾节点,pcur再往后走找到了再往tail->next插入这个节点成为尾戒点 如果pcur为value就继续往后走

链表为空pcur既是头节点和尾节点

5节点拿下来尾插时候,实际上5节点指向6节点要让newtail的next指针置为空

如果链表是空那么newtail也是NULL不能解引用如果newtail不是NULL,next就指向NULL,是空直接返回NULL

思路一:头插,插一个移动头指针

建三个指针

先让n2指向n1(NULL),n1指向n2,n2指向n3,n3指向下一个节点,,,,重复

n3后面没next了,停,n1是新链表头

链表可能是空,那么N2不能解引用,所以要判空

思路一遍历一次有一次循环,count/2又要一次循环而思路二只一次

思路一比如说是while循环计数是,count/2是6,根据6在遍历一次,6--一直减到0,减到-1找到中间节点 

2slow=fast fast走到终点slow是一半while循环条件是什么  见表

左面那种&&右边不执行

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐