手把手教你寫考研數(shù)據(jù)結(jié)構(gòu)代碼題

day10
頭插法建立單鏈表,需要在while循環(huán)中的最后加一句scanf("%d", &x);,建議使用cin>>x;
day11
尾插法創(chuàng)建單鏈表和day10有同樣的問題,建議創(chuàng)建好頭節(jié)點(diǎn)L后,立即L->next=NULL;,可減少出錯(cuò)
day12
方法一:可以看作是兩個(gè)單鏈表,L為第一個(gè)單鏈表(帶頭結(jié)點(diǎn)),r為第二個(gè)單鏈表(不帶頭結(jié)點(diǎn)),不斷從鏈表r中拿出第一個(gè)結(jié)點(diǎn),對L做頭插法
方法二:可以看作是三個(gè)單鏈表,L為第一個(gè)單鏈表(實(shí)際上只有一個(gè)空結(jié)點(diǎn)),pre是第二個(gè)單鏈表(不帶頭結(jié)點(diǎn)),r是第三個(gè)單鏈表(不帶頭結(jié)點(diǎn)),while循環(huán)中,不斷從鏈表r中拿出其第一個(gè)結(jié)點(diǎn)p,對pre做頭插法,循環(huán)結(jié)束后,此時(shí)鏈表pre的第一個(gè)結(jié)點(diǎn)為p,將L->next = p,相當(dāng)于給鏈表pre添加了一個(gè)頭結(jié)點(diǎn)。
方法三(自己的):
LinkList reverse(LinkList &L){
LNode *p, *q;
p = L->next; q = p->next;
while(q){
p-next = q->next; //先刪除
q->next = L->next; //頭插法
L->next = q;
q = p->next; // 指向原q的下一個(gè)結(jié)點(diǎn)
}
return L;
}