前端資料結構(3)之鍊錶及其應用

2021-09-24 08:10:48 字數 2268 閱讀 8485

基礎

function node(data)

複製**

單鏈表的結構示意圖如下:

鍊錶的實現

function

linklist

() let length = 0;

let head = null;

let tail = null;

let node = new node(data)

if (head == null) else

length = length + 1;

return

true;

};this.print = function

() };

this.insert = function(index, data) else

if (index == length) else else

let next_node = curr_node.next;

node.next = next_node;

curr_node.next = node;

}length = length + 1;

return

true;}};

this.remove = function(index) else else

del_node = curr_node.next;

let next_node = curr_node.next.next;

curr_node.next = next_node;

if (del_node.next == null)

}length = length - 1;

return del_node.data;}};

this.get = function(index) else else

return curr_node.data;}}

}this.indexof = function(data) else

}return -1;

}}let link = new linklist();

link.print()

複製**

鍊錶的應用題

反轉單鏈表

比較常考的一道題,有兩種方式來解決,一種是迭代法,一種是遞迴法。迭代法就是需要定義三個節點指標,乙個指向當前節點,乙個指向前面乙個節點,乙個指向後面乙個節點,反轉就是說,當前節點的next指標指向前面乙個節點。

遞迴方法就是你不會反轉當前鍊錶,讓遞迴方法先幫你反轉當前節點的下乙個節點開始的單鏈表,把反轉後的頭節點返回。你再將當前頭節點連線到返回頭節點的尾部。

class node 

}let node1 = new node(1);

let node2 = new node(2);

let node3 = new node(3);

let node4 = new node(4);

node1.next = node2;

node2.next = node3;

node3.next = node4;

node4.next = null;

function

print(node)

str += "null"

console.log(str);

}print(node1);

function reverse(node)

let curr_node = node;

let pre_node = null;

while (curr_node)

return pre_node;

}let node = reverse(node1);

print(node);

function reverse_digui(node)

if(node.next == null)

let new_head = reverse_digui(node.next);

node.next.next = node;

node.next = null;

return new_head;

}複製**

從尾到頭列印單鏈表

還是用遞迴方法,不知道如何反向列印,就先讓下乙個節點所在的單鏈表反向列印,等全部列印完,再把自己列印出來。

function reverse_print(node)

if(node == null)else

}複製**

資料結構實驗 雙向鍊錶及其應用

1.編寫使用freelist的帶頭 尾節點的雙向鍊錶類的定義,實現雙向鍊錶的基本操作。2.利用雙向鍊錶實現2個一元多項式的加法和乘法運算,運算結果得到的鍊錶要求按照指數降序排列的多項式。例如 輸入格式 3 2 第一行,兩個正整數分別表示多項式的項數 5 4 輸入第乙個多項式各項的係數和指數,按指數降...

資料結構 鍊錶應用

鍊錶應用 pragma warning disable 4996 include includetypedef struct data typedef struct nodechainlisttype void chainlistall chainlisttype head 顯示所有節點 chain...

資料結構3 鍊錶

鍊錶是儲存許多同型別的資料元素組成的有序列表。鍊錶如同火車,人數決定車箱數,人多就向系統申請多加乙個車廂,人少就去除乙個車廂。這種動態分配記憶體的方式,按需分配,可以避免記憶體的浪費。int p val int型別的指標p指向val 動態記憶體分配 就是程式在執行的時候向系統申請記憶體,程式執行結束...