單鏈表一

單鏈表樣式樣式: 頭指針--->頭結(jié)點(diǎn)---->a1---> ... --->an
頭指針:
指的是鏈表指向第一個(gè)結(jié)點(diǎn)的指針,若鏈表有頭結(jié)點(diǎn),那么就會指向這個(gè)頭結(jié)點(diǎn)。一般頭指針會被冠以鏈表的名字,做標(biāo)識作用。頭指針必須存在
頭結(jié)點(diǎn):
放在第一個(gè)元素的結(jié)點(diǎn)之前,數(shù)據(jù)域一般沒有意義,有時(shí)候可能用來存放鏈表的長度。有它是為了將頭結(jié)點(diǎn)的操作和其它節(jié)點(diǎn)統(tǒng)一起來。頭結(jié)點(diǎn)非必須。

單鏈表:若指向第i個(gè)元素,那么這個(gè)結(jié)點(diǎn)的數(shù)據(jù)域是i->data,指針域是i->next,i->next指向下一個(gè)元素。
單鏈表的讀?。〞r(shí)間復(fù)雜度為O(n)):
獲得鏈表第i個(gè)元素思路:
1)要聲明一個(gè)結(jié)點(diǎn)p指向鏈表的第一個(gè)結(jié)點(diǎn),初始化j從1開始。
2)當(dāng)j <1,遍歷鏈表,同時(shí)p的指針向后移動,指向下一個(gè)結(jié)點(diǎn),j+1。
3)當(dāng)?shù)搅随湵砟┪瞤為空時(shí),說明第i個(gè)元素不存在
4)否則查找成功,返回結(jié)點(diǎn)p的數(shù)據(jù)。

將存儲元素為e的結(jié)點(diǎn)插入到結(jié)點(diǎn)p和p->next之間,p和p->next的存儲元素分別為ai和ai+1.
單鏈表的插入操作:
1)聲明一個(gè)結(jié)點(diǎn)p指向鏈表的頭結(jié)點(diǎn),初始化j從1開始
2)2)當(dāng)j <1,遍歷鏈表,同時(shí)p的指針向后移動,指向下一個(gè)結(jié)點(diǎn),j+1。
3)當(dāng)?shù)搅随湵砟┪瞤為空時(shí),說明第i個(gè)元素不存在
4)否則查找成功,在系統(tǒng)中生成一個(gè)空的結(jié)點(diǎn)s
5)將數(shù)據(jù)元素e賦值給s->data
6)單鏈表插入兩個(gè)標(biāo)準(zhǔn)語句,s->next = p->next ,p->next = s;
7)返回成功

單鏈表的刪除操作:
1)聲明一個(gè)結(jié)點(diǎn)p指向鏈表的頭結(jié)點(diǎn),初始化j從1開始
2)2)當(dāng)j <1,遍歷鏈表,同時(shí)p的指針向后移動,指向下一個(gè)結(jié)點(diǎn),j+1。
3)當(dāng)?shù)搅随湵砟┪瞤為空時(shí),說明第i個(gè)元素不存在
4)否則查找成功,將想刪除結(jié)點(diǎn)p->next賦值給q
5)單鏈表的刪除標(biāo)準(zhǔn)語句p->next = q->next
6)將q結(jié)點(diǎn)中的數(shù)據(jù)賦值給e
7)釋放結(jié)點(diǎn)q

分析:單鏈表中插入和刪除的時(shí)間復(fù)雜度都是O(n),
相比順序存儲結(jié)構(gòu)似乎并沒有什么優(yōu)勢,但是在插入第i個(gè)位置的元素時(shí),前一種只是第一次O(n),接下來每次只需移動指針,這時(shí)時(shí)間復(fù)雜度是O(1),而順序存儲結(jié)構(gòu)始終是O(n).所以對于插入和刪除月頻繁的操作,單鏈表的優(yōu)勢才會越明顯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容