PHP實現單鏈表翻轉操作樣本講解

來源:互聯網
上載者:User
這篇文章主要介紹了PHP實現單鏈表翻轉操作,結合執行個體形式分析了php單鏈表的定義、遍曆、遞迴、翻轉等相關操作技巧,需要的朋友可以參考下

本文執行個體講述了PHP實現單鏈表翻轉操作。分享給大家供大家參考,具體如下:

當一個序列中只含有指向它的後繼結點的連結時,就稱該鏈表為單鏈表。

這裡給出了一個單鏈表的定義及翻轉操作方法:

<?php/** * @file reverseLink.php * @author showersun * @date 2016/03/01 10:33:25 **/class Node{  private $value;  private $next;  public function __construct($value=null){    $this->value = $value;  }  public function getValue(){    return $this->value;  }  public function setValue($value){    $this->value = $value;  }  public function getNext(){    return $this->next;  }  public function setNext($next){    $this->next = $next;  }}//遍曆,將當前節點的下一個節點緩衝後更改當前節點指標 function reverse($head){  if($head == null){    return $head;  }  $pre = $head;//注意:對象的賦值  $cur = $head->getNext();  $next = null;  while($cur != null){    $next = $cur->getNext();    $cur->setNext($pre);    $pre = $cur;    $cur = $next;  }  //將原鏈表的前端節點的下一個節點置為null,再將反轉後的前端節點賦給head   $head->setNext(null);  $head = $pre;  return $head;}//遞迴,在反轉當前節點之前先反轉後續節點 function reverse2($head){  if (null == $head || null == $head->getNext()) {    return $head;  }  $reversedHead = reverse2($head->getNext());  $head->getNext()->setNext($head);  $head->setNext(null);  return $reversedHead;}function test(){  $head = new Node(0);  $tmp = null;  $cur = null;  // 構造一個長度為10的鏈表,儲存前端節點對象head    for($i=1;$i<10;$i++){    $tmp = new Node($i);    if($i == 1){      $head->setNext($tmp);    }else{      $cur->setNext($tmp);    }    $cur = $tmp;  }  //print_r($head);exit;  $tmpHead = $head;  while($tmpHead != null){    echo $tmpHead->getValue().' ';    $tmpHead = $tmpHead->getNext();  }  echo "\n";  //$head = reverse($head);  $head = reverse2($head);  while($head != null){    echo $head->getValue().' ';    $head = $head->getNext();  }}test();?>

運行結果:

0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0

您可能感興趣的文章:

PHP實現合并兩個有序數組的方法講解

PHP實現約瑟夫環問題的方法詳解

Laravel5.5中利用Passport實現Auth認證的方法講解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.