欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 循環鏈表

榮姿康1年前5瀏覽0評論
JavaScript 循環鏈表 循環鏈表是數據結構中的一種,它和普通鏈表不同的地方在于,它的最后一個節點指向了頭結點。在 JavaScript 中,我們也可以通過對象的引用來創建循環鏈表。下面我們就來詳細了解一下 JavaScript 循環鏈表。 創建循環鏈表 在 JavaScript 中,我們可以定義一個循環鏈表的節點為一個對象,每個對象都有一個指向下一節點的引用 `next`,最后一個節點會指向第一個節點。下面是一個簡單的循環鏈表示例:
function Node(data) {
this.data = data;
this.next = null;
}
function CircularLinkedList() {
this.head = null;
this.tail = null;
}
CircularLinkedList.prototype.insert = function(data) {
var node = new Node(data);
if (!this.head) {
this.head = node;
this.tail = node;
} else {
this.tail.next = node;
this.tail = node;
}
this.tail.next = this.head;
};
// 創建一個循環鏈表
var list = new CircularLinkedList();
list.insert(1);
list.insert(2);
list.insert(3);
list.insert(4);
這里我們通過構造函數 `Node` 來創建鏈表節點,然后通過 `CircularLinkedList` 的原型來實現插入節點的方法 `insert`。在插入節點時,我們需要判斷頭結點是否為空,如果為空,則當前節點既是頭結點也是尾節點。如果頭結點不為空,則將當前節點插入到尾節點之后,并將尾節點指向當前節點。最后,將尾節點指向頭結點,以形成循環鏈表。 訪問循環鏈表 訪問循環鏈表的方法和普通鏈表并無太大差別,只需要通過節點的引用訪問節點的值即可。但由于循環鏈表的尾節點指向了頭節點,所以在遍歷鏈表時,需要判斷是否已經遍歷到頭節點,否則會陷入死循環。 下面是一個遍歷循環鏈表的示例:
CircularLinkedList.prototype.print = function() {
var current = this.head;
console.log(current.data);
while (current.next !== this.head) {
current = current.next;
console.log(current.data);
}
};
list.print(); // 1 2 3 4
這里我們定義了一個 `print` 方法來遍歷循環鏈表。首先打印頭節點的值,然后通過一個循環來依次打印其他節點的值。由于尾節點指向了頭節點,所以當當前節點的下一個節點等于頭節點時,就代表已經遍歷完整個循環鏈表。 操作循環鏈表 循環鏈表的操作和普通鏈表也并無太大差別,只需要通過節點的引用來進行增刪改查。但需要注意的是,由于循環鏈表的尾節點指向了頭節點,所以在修改頭節點或尾節點時,需要同時修改尾節點的指向。 下面是一個在循環鏈表中刪除某個節點的示例:
CircularLinkedList.prototype.remove = function(data) {
var current = this.head;
if (current.data === data) {
this.head = current.next;
this.tail.next = this.head;
return true;
}
while (current.next !== this.head) {
if (current.next.data === data) {
current.next = current.next.next;
this.tail.next = this.head;
return true;
}
current = current.next;
}
return false;
};
list.remove(3);
list.print(); // 1 2 4
在 `remove` 方法中,我們先判斷要刪除的節點是否為頭節點,如果是,則將頭節點指向下一個節點,并將尾節點指向頭節點。否則在循環中逐個判斷每個節點的值是否為要刪除的值,如果找到,則將當前節點的指向指向下一個節點的指向,同時將尾節點指向頭節點。如果一直到遍歷結束還沒有找到要刪除的節點,則返回 false。 總結 本文介紹了 JavaScript 中循環鏈表的創建、訪問和操作方法。循環鏈表是一種常見的數據結構,通過了解它的特性和操作方法,可以有效提高 JavaScript 編程的能力和效率。