1. 程式人生 > >輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。php

輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。php

思路:定義一個數組,將原連結串列迴圈一次封裝到陣列,運用陣列函式倒序輸出。

function printListFromTailToHead($head)
{
    // write code here
    //定義一個連結串列
    $lists = [];
    //迴圈連結串列,倒著輸出
    while($head != null)
    {
        array_push($lists,$head->val);
        $head = $head->next;
    }
    return array_reverse($lists);//以相反的元素順序返回陣列
    
}

思路:遞迴輸出

function printListFromTailToHead($head)
{
    // write code here
 
    $listArray=array();
    if($head!=NULL){
        $listArray=printListFromTailToHead($head->next);
        $listArray[]=$head->val;
    }
     
    return $listArray;
}

延伸:連結串列

1、連結串列是物理儲存單元上非連續的、非順序的儲存結構,資料元素的邏輯順序是通過連結串列的指標地址實現,有一系列結點(地址)組成,結點可動態的生成。

2、結點包括兩個部分:一、儲存資料元素的資料域(記憶體空間),二、儲存指向下一個結點地址的指標域。

3、包括單向結點,雙向結點,迴圈接點(環連結串列-快慢指標,快指標移動兩個結點,慢指標一個,快指標追上慢指標,則有環)

優缺點:

優點、連結串列實現資料元素儲存的順序儲存,是連續的

缺點、因為含有大量的指標域,所以佔用空間大,同時因為只有頭結點(後面說明)是明確知道地址的,所以查詢連結串列中的元素需要從頭開始尋找,非常麻煩。

陣列、連結串列、堆疊和佇列

單鏈表PHP操作