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

c語(yǔ)言單向鏈表反轉(zhuǎn)遞歸 如何使用遞歸和非遞歸方式反轉(zhuǎn)單向鏈表?

如何使用遞歸和非遞歸方式反轉(zhuǎn)單向鏈表?問(wèn)題:給出一個(gè)單向列表并從頭到尾顛倒它。例如:a-B-C-D依次是D-C-B-a。分析:假設(shè)每個(gè)節(jié)點(diǎn)的結(jié)構(gòu)是:復(fù)制如下代碼:類節(jié)點(diǎn){char valuenode

如何使用遞歸和非遞歸方式反轉(zhuǎn)單向鏈表?

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

C 怎么利用遞歸實(shí)現(xiàn)單線鏈表的反向輸出?

/*單向鏈表反向輸出*/]#include

#include

#define Max?LEN 10

typedef struct?LINKNODE

{

int value

struct?LINKNODE*next

}LINKNODE

/*列表反向的原理是將原列表中的元素逐個(gè)向前插入新列表*/linknode*反向鏈接(linknode*head)

{

linknode*reverse=null

linknode*temp=null

while(head)!=null)

{

temp=head->next

head->next=reverse

reverse=head

]}]return reverse

}]void main()

{

int array[MAXLEN]={0,1,2,3,4,5,6,7,8,9}

LINKNODE*head=null

LINKNODE*curNode=null

LINKNODE*temp=null

LINKNODE*revert=NULL

表示(int i=0 i