基礎
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 動態記憶體分配 就是程式在執行的時候向系統申請記憶體,程式執行結束...