首页 > 编程知识 正文

链表c语言实现,反转双向链表

时间:2023-05-05 23:53:56 阅读:33494 作者:2125

想法1:头节点插入法

如果创建新的链表,循环浏览旧的链表,然后使用头插法将新的链表中插入数据,则会出现相反的链表

2:原地反转

头节点插入法的本质是重新创建新的链表。 通过遍历要反转的链表,将链表的每个节点插入到创建的链表中。 然后,此创建的链表是反转的链表。 就地反转是根据反转链表对节点进行重新排序,从而反转链表。

边界条件1 :链表为空

2 :链表中只有一个元素

代码实现是php基于这个博客来实现链表

$tmpLinkList=new LinkList (; //插头法为publicfunction reversal ($ tmp link list ) ) { $tmpPrev=$tmpLinkList-head; $prev=$this-head-next; if($prev==null ) ) { echo '链表为空'.'n '; 返回; (if ) $prev-next==null ) ) { echo '链表中只有一个元素'.'n '; 返回; }while($prev!=null ) { $val=$prev-val; $prev=$prev-next; $tmpPrev-next=newnode($val,$tmpprev-next ); } $this-head=$tmpPrev; //就地public function reversalInPlace () { $prev=$this-head-next; if($prev==null ) ) { echo '链表为空'.'n '; 返回; (if ) $prev-next==null ) ) { echo '链表中只有一个元素'.'n '; 返回; } $pNext=$prev-next; $ tmp=空; while($pnext!=null($tmp=$pnext-next; $pNext-next=$prev; $prev=$pNext; $pNext=$tmp; //此时,pNext指向原始链表的最后一个元素,也是反转链表的标头元素$this-head-next-next=null; //链表末尾的$this-head-next=$prev; //调整链表的头}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。