想法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; //调整链表的头}