線性表的鏈式儲存,包含兩個域,乙個儲存的值(this.data),乙個指向下乙個鍊錶節點(this.next)。
封裝鍊錶類,新增鍊錶的屬性:鍊錶節點、頭部(鍊錶的起始點)、長度。
// 封裝鍊錶類
function linkedlist()
//指向鍊錶頭部的屬性
this.head = null
//記錄鍊錶長度的屬性
this.length = 0;
}
給鍊錶新增方法進行增刪改查等操作。
//1.建立新節點
var newnode = new node(data);
//2.判斷是否存在第乙個節點
不存在第乙個節點
if(this.length == 0) else
// 最後節點的next指向新節點
current.next = newnode;
}// 長度屬性加一
this.length += 1;
}2.tostring()
linkedlist.prototype.tostring = function()
return liststring;
}
3.在確定位置position插入節點linkedlist.prototype.insert = function(position, data) else
// 插入節點,修改指向
newnode.next = current;
previous.next = newnode;
}//4.增加長度
this.length += 1;
return true;
}
4.查詢某個位置(position)的值linkedlist.prototype.getposition = function(position)
return current.data;
}
5.修改指定位置(position)資料linkedlist.prototype.update = function(position, newdata)
current.data = newdata;
return true;
}
6.查詢某個值的索引位置linkedlist.prototype.indexof = function(data)
// 下乙個節點
current = current.next;
index++;
}//3.在鍊錶中沒有找到該元素,返回-1
return -1;
}
7.刪除指定位置資料(position),返回資料linkedlist.prototype.removeat = function(position) else
//前乙個節點的next指向current的next即可
previous.next = current.next;
}// 3.長度減一
this.length -= 1;
return current.data;
}
8.刪除某個值對應的節點linkedlist.prototype.remove = function(data)
9.判斷鍊錶是否為空linkedlist.prototype.isempty = function()
10.返回鍊錶長度linkedlist.prototype.size = function()
(1)查詢對應資料value
亂序陣列遍歷找到對應資料,複雜度o(n)
排序陣列折半查詢找到對應資料,複雜度o(log2n)
鍊錶遍歷查詢對應資料,複雜度o(n)
(2)按索引查詢
陣列複雜度o(1),鍊錶o(n)
(3)插入、刪除資料
尾部插入、刪除:陣列複雜度o(1),鍊錶o(n)
任意位置插入、刪除:陣列需要平均移動半個表長的資料,鍊錶只需要修改前後指標即可
(4)靈活性
鍊錶在需要時可以申請新空間,操作靈活、高效
這是在b站上看coderwhy老師的課程整理的筆記,老師的官方部落格:資料結構(五)之鍊錶結構
資料結構 鍊錶
鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...
資料結構 鍊錶
鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...
資料結構 鍊錶
一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...