1.定義節點類
function node(element)
2.定義鍊錶及增刪查改方法
function linklist()
function find(item)
return curnode;
}//通過索引找元素
function findbyindex(index)
return curnode;
}function insert(newelement, item)
//列印鍊錶的方法
function display()
}
另外寫了乙個輸入陣列轉為鍊錶儲存的方法
//傳進陣列存在鍊錶
function tolist(array)
// list.display();
return list;
}
3.演算法:鍊錶反轉的方法關於書寫鍊錶的一些方法時,容易出錯的難點在於迴圈時next指標指向經常容易弄錯,有時候已經改變了next指標的指向,對於指向問題最好多畫圖。
//關於鍊錶翻轉的方法,比如,鍊錶為1→2→3→4→5→6,k=2,則翻轉後2→1→6→5→4→3
function reservelist(k)
item = this.head.next;
this.head.next = prevnode;
item.next = null;
let newmid = item;
//因為不是整個鍊錶翻轉,前後兩部分分別翻轉,所以在做一些調整
let newmid2 = this.head.next;
this.head.next = miditem;
newmid.next = newmid2;
miditem2.next = null;
this.display();
}var x = tolist([1, 2, 3, 4, 5, 6, 7, 8]);
var y = x.findbyindex(3);
var z = x.reservelist(4);
測試例子
演算法學習 反轉鍊錶
輸入乙個鍊錶的頭結點,將這個鍊錶反轉並輸出它的新的頭結點 public class listnode 方法一 public class solution h1.next null return head 方法二 其實我寫的這兩個差不多,為什麼要寫相似的兩個?因為我要學習區別使用p和p.next的區別...
演算法學習 2 4 鍊錶
前言 在儲存一大波數的時候我們通常用的是陣列,但有時候陣列顯得不太靈活 例如 從小到大排好的一串數字 2 3 5 8 9 10 18 26 32,我們要插入6使得其順序依然不變,如果用陣列的話就要讓8以及8往後的數都要往後挪一位,很浪費時間,但如果用鍊錶操作只需要將5的指標指向6的指標,再將6的指標...
演算法學習之鍊錶反轉
摘要 鍊錶逆轉是面試環境中經常遇到的一道題目,也是我們在實際開發中可能會遇到的開發需求。和線性逆轉不一樣,單向鍊錶的節點需要乙個乙個進行處理。有需要的朋友可以看一下,如果有沒考慮周全的地方歡迎指正。為了顯示兩者之間的區別,我們分別對線性記憶體和鍊錶進行逆 status normal revert i...