鍊錶分類:
1、單向鍊錶
2、雙向鍊錶
3、環形鍊錶
基本概念:
鍊錶實際上是線性表的鏈式儲存結構,與陣列不同的是,它是用一組任意的儲存單元來儲存線性表中的資料,儲存單元不一定是連續的。
每個節點都包含兩個部分,第一部分稱為鍊錶的資料區域,用於儲存元素本身的資料資訊,這裡用data表示,
第二部分是乙個結構體指標,稱為鍊錶的指標域,用於儲存其直接後繼的節點資訊,這裡用next表示,
next的值實際上就是下乙個節點的位址。當前節點為末節點時,next的值設為空指標。
鍊錶的基本結構:
鍊錶應用場景:
鍊錶常用於在程式中臨時儲存一組不定長的線性資料。
1,資料是逐漸增加的
2,資料是不定長的,在儲存第乙個資料之前難以確定乙個將來一共需要儲存多少資料的上限,或者雖可確定上限,但這個上限又比通常大部分情況下資料可能達到的長度要大得多,因而一次性按照上限把空間分配好是不划算的。
鍊錶的特點:
優點:非常方便地實現節點的插入和刪除操作,而陣列需要移動非常多的步驟。
缺點:鍊錶只能順序訪問,無法得到任意乙個位置的元素,鍊錶這種儲存方式最大缺點就是容易出現斷鏈。一旦鍊錶中某個節點的指標域資料丟失,那麼意味著將無法找到下乙個節點,該節點後面的資料將全部丟失。
使用js建立鍊錶:
functionlinkedlist() ;
var length = 0;
var head = null
;
(val)
else
current.next = node; //
將尾節點指向新的元素,新元素作為尾節點
}
length++; //
更新鍊錶長度
};
this.removeat = function
(position)
else
previous.next =current.next;
}length--;
return
current.val;
} else
};this.insert = function
(position, val) else
//遍歷結束得到當前position所在的current節點,和上乙個節點
previous.next = node; //
上乙個節點的next指向新節點 新節點指向當前結點,可以參照上圖來看
node.next =current;
}length++;
return
true
; }
else
};this.tostring = function
()
return
string;
};this.indexof = function
(val)
index++;
current =current.next;
}return -1;
};this.getlength = function
()
this.gethead = function
() } //
建立鍊錶
var li = new
linkedlist();
li.insert(2,3);
li.insert(2,3);
console.log(li.tostring())
//1,2,3,3,4,4,5
console.log(li.gethead()) //
1->2->3->3->4->4->5
資料結構 鍊錶
鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...
資料結構 鍊錶
鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...
資料結構 鍊錶
一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...