国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > PHP > 正文

PHP雙向鏈表定義與用法示例php技巧

2020-03-22 20:07:21
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP雙向鏈表定義與用法,涉及php使用雙向鏈表類封裝雙向鏈表定義、讀取、刪除、插入等相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP雙向鏈表定義與用法。分享給大家供大家參考,具體如下:

由于需要對一組數據多次進行移動操作,所以寫個雙向鏈表。但對php實在不熟悉,雖然測試各個方法沒啥問題,就是不知道php語言深層的這些指針和unset有什么注意的地方,貼出來讓大家教育吧。效率沒測試....求諒解~

 ?php * **雙向鏈表 * @author zhiyuan12@ * 鏈表元素結點類html' target='_blank'>class Node_Element { public $pre = NULL; // 前驅 public $next = NULL; // 后繼 public $key = NULL; // 元素鍵值 public $data = NULL; // 結點值 function __Construct($key, $data) { $this- key = $key; $this- data = $data; * 雙向鏈表類class DoubleLinkedList { private $head; // 頭指針 private $tail; // 尾指針 private $current; // 當前指針 private $len; // 鏈表長度 function __Construct() { $this- head = self::_getNode ( null, null ); $this- curelement = $this- head; $this- tail = $this- head; $len = 0; * @ desc: 讀取鏈表全部結點 public function readAll() { $tmp = $this- head; while ( $tmp- next !== null ) { $tmp = $tmp- next; var_dump ( $tmp- key, $tmp- data ); public function move($pos1, $pos2) { $pos1Node = $this- findPosition ( $pos1 ); $pos2Node = $this- findPosition ( $pos2 ); if ($pos1Node !== null $pos2Node !== null) { $tmpKey = $pos1Node-  $tmpData = $pos1Node- data; $pos1Node- key = $pos2Node-  $pos1Node- data = $pos2Node- data; $pos2Node- key = $tmpKey; $pos2Node- data = $tmpData; return true; return false; * @ desc: 在指定關鍵詞刪除結點 * @param : $key * 指定位置的鏈表元素key public function delete($key) { $pos = $this- find ( $key ); if ($pos !== null) { $tmp = $pos; $last = null; $first = true; while ( $tmp- next !== null $tmp- next- key === $key ) { $tmp = $tmp- next; if (! $first) { $this- delNode ( $last ); } else { $first = false; $last = $tmp; if ($tmp- next !== null) { $pos- pre- next = $tmp- next; $tmp- next- pre = $pos-  } else { $pos- pre- next = null; $this- delNode ( $pos ); $this- delNode ( $tmp ); * @ desc: 在指定位置刪除結點 * @param : $key * 指定位置的鏈表元素key public function deletePosition($pos) { $tmp = $this- findPosition ( $pos ); if ($tmp === null) { return true; if ($tmp === $this- getTail ()) { $tmp- pre- next = null; $this- delNode ( $tmp ); return true; $tmp- pre- next = $tmp- next; $tmp- next- pre = $tmp-  $this- delNode ( $tmp ); * @ desc: 在指定鍵值之前插入結點 * @param : $key * //指定位置的鏈表元素key * @param : $data * //要插入的鏈表元素數據 * @param : $flag * //是否順序查找位置進行插入 public function insert($key, $data, $flag = true) { $newNode = self::_getNode ( $key, $data ); $tmp = $this- find ( $key, $flag ); if ($tmp !== null) { $newNode- pre = $tmp-  $newNode- next = $tmp; $tmp- pre = $newNode; $newNode- pre- next = $newNode; } else { $newNode- pre = $this- tail; $this- tail- next = $newNode; $this- tail = $newNode; $this- len ++; * @ desc: 在指定位置之前插入結點 * @param : $pos * 指定插入鏈表的位置 * @param : $key * 指定位置的鏈表元素key * @param : $data * 要插入的鏈表元素數據 public function insertPosition($pos, $key, $data) { $newNode = self::_getNode ( $key, $data ); $tmp = $this- findPosition ( $pos ); if ($tmp !== null) { $newNode- pre = $tmp-  $newNode- next = $tmp; $tmp- pre = $newNode; $newNode- pre- next = $newNode; } else { $newNode- pre = $this- tail; $this- tail- next = $newNode; $this- tail = $newNode; $this- len ++; return true; * @ desc: 根據key值查詢指定位置數據 * @param : $key * //指定位置的鏈表元素key * @param : $flag * //是否順序查找 public function find($key, $flag = true) { if ($flag) { $tmp = $this- head; while ( $tmp- next !== null ) { $tmp = $tmp- next; if ($tmp- key === $key) { return $tmp; } else { $tmp = $this- getTail (); while ( $tmp- pre !== null ) { if ($tmp- key === $key) { return $tmp; $tmp = $tmp-  return null; * @ desc: 根據位置查詢指定位置數據 * @param : $pos * //指定位置的鏈表元素key public function findPosition($pos) { if ($pos = 0 || $pos $this- len) return null; if ($pos ($this- len / 2 + 1)) { $tmp = $this- head; $count = 0; while ( $tmp- next !== null ) { $tmp = $tmp- next; $count ++; if ($count === $pos) { return $tmp; } else { $tmp = $this- tail; $pos = $this- len - $pos + 1; $count = 1; while ( $tmp- pre !== null ) { if ($count === $pos) { return $tmp; $tmp = $tmp-  $count ++; return null; * @ desc: 返回鏈表頭節點 public function getHead() { return $this- head- next; * @ desc: 返回鏈表尾節點 public function getTail() { return $this- tail; * @ desc: 查詢鏈表節點個數 public function getLength() { return $this-  private static function _getNode($key, $data) { $newNode = new Node_Element ( $key, $data ); if ($newNode === null) { echo new node fail!  return $newNode; private function delNode($node) { unset ( $node ); $this- len --;$myList = new DoubleLinkedList ();$myList- insert ( 1, test1 );$myList- insert ( 2, test2 );$myList- insert ( 2b , test2-b );$myList- insert ( 2, test2-c );$myList- insert ( 3, test3 );$myList- insertPosition ( 5, t , testt );$myList- readAll ();echo +++ $myList- deletePosition(0);$myList- readAll ();echo ... . $myList- getLength ();var_dump ( $myList- findPosition ( 3 )- data );? 

運行結果:

int(1)string(5) test1 int(2)string(7) test2-c int(2)string(5) test2 string(2) 2b string(7) test2-b string(1) t string(5) testt int(3)string(5) test3 +++int(1)string(5) test1 int(2)string(7) test2-c int(2)string(5) test2 string(2) 2b string(7) test2-b string(1) t string(5) testt int(3)string(5) test3 ...6string(5) test2 

您可能感興趣的文章:

PHP運用foreach神奇的轉換數組(實例講解)php實例

基于php雙引號中訪問數組元素報錯的解決方法php技巧

php 刪除一維數組中某一個值元素的操作方法php技巧

以上就是PHP雙向鏈表定義與用法示例php技巧的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线黄色国产电影| 天堂在线视频| 97国产视频| 国产一区二区三区不卡在线| 黄色免费av| 高清av中文在线字幕观看1| www.99色.com| 天堂在线一二区| 69久久久久| 久久精品最新免费国产成人| 中中文字幕av在线| 国产成人午夜电影| 六月天色婷婷| 国产第一页在线| www在线视频| 国产福利电影在线| 欧美96在线| 91亚洲天堂| 免费看的av| 91黄色在线| 丁香婷婷在线观看| av丝袜在线| 国产激情视频在线| 国产在线观看网站| 日本一二三区视频免费高清| 国产一级片麻豆| 伊人影院在线播放| 国产精品剧情一区二区三区| 白浆爆出在线观看| 精品麻豆一区二区三区| 最近中文字幕mv免费高清电影 | 国产精品麻豆一区二区三区| 天海翼中文字幕| 伊人狠狠av| 97人人在线| 精品精品导航| 国产视频二区在线观看| 久久久久久久久久久久网站| 午夜小视频在线| av资源网站在线观看| gogogogo高清视频在线| 在线播放国产区| 在线观看中文字幕的网站| 国产探花在线观看| 午夜伦全在线观看| 日本中文字幕高清视频| www在线视频| 狠狠操视频网| 黄色一级视频网站| 国产剧情av在线| 国产性网软件大全| 最新中文字幕av专区| 国产精品一卡二卡三卡| 久草亚洲一区| 国产网站观看9久| 国产精品186在线观看在线播放 | 久色视频在线观看| 久热中文字幕在线观看| 国产中文在线视频| 国产一级在线观看| 国产激情在线视频| 四虎久久影院| 天天操人人干| 国产白浆在线| av首页在线| 天天操人人干| 天堂网中文在线| 开心婷婷激情五月| 国产精品入口麻豆电影| 国产91足控脚交在线观看| 人日人天天爽| 国产视频福利在线| 欧美精品小视频| 国产激情网址| 懂色一区二区三区| 国产高清在线视频| 国产在线中文字幕| 精精国产xxxx视频在线中文版| 日本国产在线| 在线伊人免费视频| 五月天婷婷基地| 四虎免费视频| 91社区在线观看| 最近免费中文字幕在线第一页| 亚洲欧美精品日韩欧美 | 国产理论片免费观看| 三级小说一区| 99久热re在线精彩视频| 九色成人在线| 青青九九免费视频在线| 亚洲精品视频区| 2019年中文字幕| 国产色婷婷在线| 国产伦精品一区二区三区高清版禁 | 在线观看免费高清完整| 国产探花在线观看| 狠狠色综合久久婷婷| 轻轻色免费在线视频| 午夜在线网站| a视频在线播放| 亚洲成年人视频| 一二三四区在线观看| 中文字幕4区| 伊人影院在线观看| 97操碰视频| 大香伊人久久| 国产精品9区| 最新中文字幕av专区| 天堂资源中文在线| 在线午夜影院| 久久国产综合视频| 羞羞视频在线免费看| 精品美女调教视频| 国产精品99999| 国产午夜视频| 国产精品粉嫩av| 夜夜操com| a视频在线观看| 最新超碰在线| 国产黄a三级三级三级av在线看| 国产色a在线观看| 2019年中文字幕| 色悠久久久久综合网小说| 久久久久久久久久久久网站| 国产一二三区在线视频| 在线观看av资源网| 日本三级在线视频| 成年女人在线视频| 国产激情小视频在线| 快射av在线播放一区| 国产福利免费观看| 久久国产精品久久久久久小说| 国产色a在线观看| a视频免费看| 国产视频福利| 免费日本黄色| 国产不卡精品一区二区三区| 麻豆精品永久免费视频| 国产视频第一区| 激情亚洲综合网| 亚洲天堂久久久| 最近中文字幕在线中文视频| 国产xxxx做受性欧美88| 日本一二区视频| 国产视频一二区| 日本电影全部在线观看网站视频| 国产精品爱久久久久久久小说| 人人干在线视频| 在线天堂中文www视软件| 99热最新网址| 丁香在线视频| 二区三区中文字幕| 久久久久久久久亚洲精品| av日韩国产| 亚洲欧美精品日韩欧美| 中文天堂av| 在线观看av的网站| 国产特黄在线| 国产高清在线看| 99久久99久久免费精品小说| 国产成人精品综合网站| 国产精品入口麻豆免费看| 国产精品一区在线看| 好吊日视频在线观看| 欧美日韩不卡中文字幕在线| 青青草免费在线观看| 免费国产阿v视频在线观看| 超碰91在线| 黄网站app在线观看下载视频大全官网| 日本调教视频在线观看 | 中文国产字幕在线观看| 99免费视频| 在线三级av| www操操操| 超碰在线网站| 中文字幕欧美日韩在线不卡| 国产精品自拍在线观看| 国产精品va在线观看视色| 国产精品剧情一区二区在线观看| 91在线最新| 男女午夜视频在线观看| 中文字幕在线视频观看| 国产精品视频一区二区三区麻豆| 国产超碰97| www.操操操| 国产探花在线观看| 香蕉视频网站在线观看| 五月婷婷在线视频| 一级黄色av| 中文字幕视频在线观看| 91涩漫在线观看c| 丁香花高清在线观看完整版| 国产精品粉嫩av| 国产在线观看a视频| 天堂资源在线中文| 一本大道香蕉久久| 国产香蕉视频在线观看| 欧美精品日韩少妇| 91欧洲在线视精品在亚洲| 任你操在线观看|