4.4单链表专题加应用
另一种思路建立一个新链表Head Tail都赋值NULL,再来一个变量遍历我的原链表pcur指向第一个节点找不为value的节点进行新链表尾插,分两种情况,开始新链表是NULL尾插的话既是头节点也是尾节点,pcur再往后走找到了再往tail->next插入这个节点成为尾戒点 如果pcur为value就继续往后走。若pos是第一个节点prev可能一直往下走,出现对空指针解引用的情况,pos是最后一个
如果链表只有一个节点这个代码也好使
查找不一定会影响到我指向第一个节点的指针,所以传一级指针
如果一个函数遍历两次不新建一个指针的话原指针丢失。不能第二次遍历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循环条件是什么 见表
左面那种&&右边不执行
更多推荐
所有评论(0)