前端演算法學習js鍊錶定義及翻轉

2021-09-10 09:43:57 字數 1256 閱讀 5803

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...