大佬們發來這樣一道面試題,三行三句**,完成單鏈表逆置功能。
一開始我的想法,是在reverse(node head)這個方法裡遞迴,在後乙個reverse方法裡完成具體逆置操作。
於是在後乙個reverse方法裡,我是這麼寫的:
這樣就完成了單個節點的逆置node newnode = next.node;
next.node = cur;
但是在第乙個reverse方法裡,反覆試了好幾次遞迴,都有問題,一次棧溢位(說明無限遞迴了),一次空指標,一次沒有逆置成功。
於是我開始懷疑是不是我的遞迴寫錯了地方。
當時比較懶,沒有順手拿張紙畫一畫,靠腦袋硬想。後來大佬給了個提醒,然後重新寫了乙個解法,好用了,逆置成功。
**如下:
所以,第乙個reverse方法只是乙個幌子,精華還是在第二個reverse方法中。public
class
node
public
static node reverse
(node head)
public
static node reverse
(node cur , node next)
node newnode =
reverse
(next,next.next)
; next.next = cur;
return newnode;
}public
static
void
main
(string[
] args)
}
先遞迴把next節點後面的節點全部逆置完成,然後把next節點指向cur節點即可。
其實挺簡單的乙個理,寫好之後馬上就明白怎麼回事了。
但就是智商不夠用,真的沒救了。
每天作死一道題 單鏈表的逆轉
6 1 單鏈表逆轉 20 分 本題要求實現乙個函式,將給定的單鏈表逆轉。函式介面定義 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l...
每天作死一道題 求單鏈表的長度
6 3 求鏈式表的表長 10 分 本題要求實現乙個函式,求鏈式表的表長。函式介面定義 int length list l 其中list結構定義如下 typedef struct lnode ptrtolnode struct lnode typedef ptrtolnode list l是給定單鏈表...
6 1 帶頭結點的單鏈表就地逆置(函式題)
本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。函式介面定義 void listreverse...