在一個(gè)雙向鏈表中刪除p 雙鏈表的插入與刪除操作?
雙鏈表的插入與刪除操作?//定義插入:S->prior=P->prior->next=SS->next=PP->prior=S//第一句必須在第四句之前完成,否則*P的前導(dǎo)節(jié)點(diǎn)將丟
雙鏈表的插入與刪除操作?
//定義插入:S->prior=P->prior->next=SS->next=PP->prior=S//第一句必須在第四句之前完成,否則*P的前導(dǎo)節(jié)點(diǎn)將丟失。Delete:P->prior->next=P->next->prior=P->prior free(P)//繞過(guò)P
單鏈表缺少的2113點(diǎn)是它只能向前移動(dòng),而不是5261可以向后移動(dòng)。雖然有循環(huán)單鏈表,但4102向后走的成本還是很高的1653,需要跑一圈。這時(shí),雙向列表應(yīng)運(yùn)而生,再加上循環(huán),也就是雙向循環(huán)列表就更好了。所謂雙向鏈表,就是在前導(dǎo)節(jié)點(diǎn)上加一個(gè)指針,雙向循環(huán)鏈表把最后一個(gè)節(jié)點(diǎn)的后繼指針指向頭節(jié)點(diǎn)。訪問(wèn)方式:?jiǎn)捂湵恚喝绻L問(wèn)任何節(jié)點(diǎn),只能從頭到尾訪問(wèn)。單循環(huán)鏈表:您可以從任何節(jié)點(diǎn)開始,并從末端訪問(wèn)到任何節(jié)點(diǎn)。雙向鏈表:您可以從任何節(jié)點(diǎn)開始,并從頭到尾訪問(wèn)它。單鏈表和單循環(huán)鏈表:只能在當(dāng)前節(jié)點(diǎn)之后插入和刪除;雙鏈表:可以在當(dāng)前節(jié)點(diǎn)之前或之后插入,并且可以刪除以前的趨勢(shì)和以后的存儲(chǔ)(包括節(jié)點(diǎn)本身):?jiǎn)捂湵砗蛦窝h(huán)鏈表的存儲(chǔ)密度高于雙鏈表
雙向鏈表狀態(tài)列表的插入操作insert_uudul(DuLinkList&L,int i,ElemType&e){if(?。╬=GetElemP_udul(L,i)))返回錯(cuò)誤if(?。╯=(DuLinkList)malloc(sizeof(DuLNode)))return ERROR s->data=es->prior=p->prior p->prior->next=s->next=p->prior=s return OK}//listinert_udul
訪問(wèn)模式:?jiǎn)捂湵恚喝绻L問(wèn)任何節(jié)點(diǎn),每次只能按順序從頭到尾訪問(wèn)單個(gè)循環(huán)鏈表:可以從任意節(jié)點(diǎn)開始,按順序訪問(wèn)任意節(jié)點(diǎn)雙向鏈表:可以從任意節(jié)點(diǎn)開始,任意前后訪問(wèn)。單鏈表和單循環(huán)鏈表:只能在當(dāng)前節(jié)點(diǎn)后插入和刪除雙鏈表。它可以在當(dāng)前節(jié)點(diǎn)之前或之后插入,并刪除前向和后續(xù)(包括節(jié)點(diǎn)自己的)存儲(chǔ)。單鏈表和單循環(huán)鏈表的存儲(chǔ)密度高于雙鏈表