php實現資料結構 單向鍊錶

2021-09-12 23:25:15 字數 2405 閱讀 8341

什麼是單向鍊錶

鍊錶是以鏈式儲存資料的結構,其不需要連續的儲存空間,鍊錶中的資料以節點來表示,每個節點由元素(儲存資料)和指標(指向後繼節點)組成。

單向鍊錶(也叫單鏈表)是鍊錶中最簡單的一種形式,每個節點只包含乙個元素和乙個指標。

它有乙個表頭,並且除了最後乙個節點外,所有節點都有其後繼節點。

它的儲存結構如下圖所示

**實現

定義節點

class node

}

單鏈表實現

/**

* class singlelinklist

* 單鏈結的實現示例,實現簡單的填加,插入,刪除, 查詢,長度,遍歷這幾個簡單操作

*/class singlelinklist

/*** 在鍊錶末尾新增節點

* @param node $node

* @return int

*/public function addnode(node $node)

$current->next = $node;

return ++$this->size;

}/**

* 在指定位置插入節點

* @param int $index 節點位置,從1開始計數

* @param node $node

* @return int

* @throws exception

*/public function insertnodebyindex($index, node $node)

$current = $this->header;

$tempindex = 1;

do } while ($current->next != null && ($current = $current->next));

return ++$this->size;

}/**

* 刪除節點

* @param int $index 節點位置,從1開始計數

* @return int

* @throws exception

*/public function deletenodebyindex($index)

$current = $this->header;

$tempindex = 1;

do } while ($current->next != null && ($current = $current->next));

return --$this->size;

}/**

* 查詢節點

* @param int $index 節點位置,從1開始計數

* @return node|null

* @throws exception

*/public function searchnodebyindex($index)

$current = $this->header;

$tempindex = 1;

do } while ($current->next != null && ($current = $current->next));

}/**

* 獲取節點長度

* @return int

*/public function getlength()

/*** 遍歷列表

*/public function shownode()}}

示例

$link = new singlelinklist();

$link->addnode(new node(1));

$link->addnode(new node(2));

$link->insertnodebyindex(3, new node(3));

$link->addnode(new node(4));

$link->addnode(new node(5));

echo $link->getlength(), php_eol;

$link->shownode();

echo '-----------', php_eol;

var_dump($link->searchnodebyindex(3));

echo '-----------', php_eol;

$link->deletenodebyindex(3);

$link->shownode();

php實現資料結構 單向鍊錶

什麼是單向鍊錶 鍊錶是以鏈式儲存資料的結構,其不需要連續的儲存空間,鍊錶中的資料以節點來表示,每個節點由元素 儲存資料 和指標 指向後繼節點 組成。單向鍊錶 也叫單鏈表 是鍊錶中最簡單的一種形式,每個節點只包含乙個元素和乙個指標。它有乙個表頭,並且除了最後乙個節點外,所有節點都有其後繼節點。它的儲存...

資料結構 單向鍊錶(java實現)

public class node 為節點追加節點 當前節點 node currentnode this while true 賦值當前節點 currentnode nextnode 把需要追回的節點追加為找到的節點的下乙個節點 currentnode.next node return this 刪...

資料結構 單向鍊錶的實現

單向鍊錶的實現 記錄 非常菜雞的開始 節點中定義節點時 成員變數要寫struct 因為沒寫報了一堆錯 老師節點裡的node都是變數型別,只有linknode內部是指標型別,內部使用指標,指標大小為4個位元組 可以分配記憶體很方便。注意teacher輸入的時候為位址 各種指標型別的轉換 main函式中...