国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

數(shù)據(jù)結(jié)構(gòu)單鏈表逆轉(zhuǎn) c 大神!怎么理解鏈表這個反轉(zhuǎn)函數(shù)?

c 大神!怎么理解鏈表這個反轉(zhuǎn)函數(shù)?首先,P是指向shape類的指針,指向當(dāng)前元素,q是復(fù)制P的指針,它用來反轉(zhuǎn)鏈表的位置,R是指向上一個位置的指針,while(P),也就是while(P!=nul

c 大神!怎么理解鏈表這個反轉(zhuǎn)函數(shù)?

首先,P是指向shape類的指針,指向當(dāng)前元素,q是復(fù)制P的指針,它用來反轉(zhuǎn)鏈表的位置,R是指向上一個位置的指針,while(P),也就是while(P!=null),表示r=q是copy q的值,即指向上一個位置的指針,q=P是copy的當(dāng)前地址,P=P->next是將P向后移動,q->next=r是將q指向r,即后者指在最后,當(dāng)P=null時,q仍然保持鏈表的結(jié)尾。這時,用Q替換頭部,將鏈的頭部改為鏈表的尾部,并結(jié)束整個反轉(zhuǎn)

反轉(zhuǎn)單個鏈表。R示例:[R

advanced:可以迭代或遞歸地反轉(zhuǎn)鏈表。你能用兩種方法解決這個問題嗎?采用頭部插入法。R代碼

單鏈表反轉(zhuǎn):例如,在原始鏈表是head->

1->

2->

3->空反轉(zhuǎn):head-> 3-> 2-> 1->空實現(xiàn)代碼:#include

問題:給出一個單向鏈表,并從頭到尾反轉(zhuǎn)它。例如:a-B-C-D依次是D-C-B-a。分析:假設(shè)每個節(jié)點的結(jié)構(gòu)是:復(fù)制如下代碼:類節(jié)點{char valuenode next},因為在反轉(zhuǎn)鏈表時,我們需要更新每個節(jié)點的“next”值。但是,在更新下一個值之前,需要保存下一個值,否則無法繼續(xù)。因此,我們需要兩個指針分別指向前一個節(jié)點和下一個節(jié)點。在更新當(dāng)前節(jié)點的“next”值之后,我們向下移動這兩個節(jié)點,直到到達最后一個節(jié)點。代碼如下:public node reverse(node current){//initializationnode previousnode=nullnode nextnode=nullwhile(current!=null){//保存下一個nodenextnode=current.next//update當(dāng)前.next//update“下一步”的值當(dāng)前.下一個=previousNode//shift指針previousNode=currentcurrent=nextNode}return previousNode}上面的代碼使用非遞歸方法,也可以通過遞歸來解決。代碼如下:復(fù)制代碼如下:public node reverse(node current){if(current==null)|當(dāng)前.下一個==null)返回currentNode nextNode=當(dāng)前.nextcurrent.next=Nullnode reverserest=reverse(nextnode)return reverserest}遞歸方法實際上非常巧妙。它使用遞歸轉(zhuǎn)到鏈表的末尾,然后更新每個節(jié)點的下一個值(代碼的倒數(shù)第二句)。