PHP實現鍊錶的定義與反轉功能示例

2022-09-26 18:30:19 字數 2127 閱讀 5436

php定義鍊錶及新增、移除、遍歷等操作:

<?php class node

public function setnext($value)

public function getdata()

public function getnext()

public function __construct($data,$next)

}class linklist

return $i;

} public function setheader($value)

public function getheader()

public function __construct()

/***@author mzxy

*@param $data--要新增節點的資料

* *程式設計客棧/

public function add($data)

$node->setnext(new node($data,null));

} /**

*@author mzxy

*@param $data--要移除節點的資料

* */

public function removeat($data)

$node->setnext($node->getnext());

$node->setdata($node->getnext()->getdata());

} /**

*@author mzxy

*@param 遍歷

* */

public function get()

程式設計客棧 while($node->getnext()!=null)

$node=$node-&www.cppcns.comgt;getnext();

}} /**

*@author mzxy

*@param $data--要訪問的節點的資料

* @param 此方法只是演示不具有實際意義

* */

public function getat($data)

while($node->getdata()!=$data)

$node=$node->getnext();

}return $node->getdata();

} /**

*@author mzxy

*@param $value--需要更新的節點的原資料 --$initial---更新後的資料

反轉鍊錶操作:

1. 常用的方法:左右交替,下乙個結點儲存,上乙個結點替換該結點的下個結點。實現替換。

**:function reverselist($phead)

$p = $phead;

$q = $phead->next;

$phead->next = null;//$phead 變為尾指標

while($q)

return $p;

}2. 使用遞迴方法。三個結點,頭結點,首節點,第二個結點。把首節點後面的所有結點當成第二個結點,依次迴圈下去,由於要滿足$phead != null || $phead->next != null;所以不會出現遍歷不完的情況

function reverselist($phead)

$res = reverselist($phead->next);

$phead->next->next = $phead;

$phead->next = null;

return $res;

}

python實現鍊錶與反轉

鍊錶記錄了頭節點與尾節點,是為了方便末尾新增時,不在遍歷鍊錶而設定的。反轉的思想是設定乙個前驅節點為none,首節點指向none,下乙個節點指向前乙個節點即可。class node object def init self,data none next none self.data data sel...

反轉鍊錶與分組反轉鍊錶

經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...

PHP 資料結構 反轉鍊錶PHP實現

1.常見方法分為迭代和遞迴,迭代是從頭到尾,遞迴是從尾到頭 2.設定兩個指標,old和new,每一項新增在new的後面,新煉表頭指標指向新的煉表頭 3.old next不能直接指向new,而是應該設定乙個臨時指標tmp,指向old next指向的位址空間,儲存原鍊錶資料,然後old next指向ne...