反轉乙個單鏈表
輸入:1-
>2-
>3-
>4-
>5-
>null
輸出:5
->4-
>3-
>2-
>1-
>null
func
reverselist
(head *listnode)
*listnode
if head !=
nil&& head.next==
nil next := head.next
head.next=
nil newhead :=
reverselist
(next)
next.next=head
return newhead
}
func
reverselist
(head *listnode)
*listnode
return newhead
}
引用型別變數被引用的變數內容的改變,會導致被引用內容的變動
如 迭代方法1與2 順序不可交換,原因在於newhead 與 head 為引用同一源內容,若2在前意味著,head的next指向也被修改為nxt,此時
執行1**,意味著得到的新head指向的不是源head指標的下乙個,而是修改後的下乙個
問題的本質在於資料的可變性,稍不注意會產生不可預知的後果,易錯。同樣的情況在遞迴中也發生。
反向列印單鏈表
package com.study 從尾到頭列印單鏈表 class node class stack else public static int pop else public class suanfa3 根據陣列建立單鏈表 public static void createlist int ar...
Golang實現單鏈表
package main import fmt 定義結構體 注意點 go不支援型別別名,type與c語言中的typedef並不一樣 var a int a 3 type int int var b int b 3 fmt.println a b 報錯 invalid operation a b mi...
遞迴函式反向顯示單鏈表
不帶表頭的單鏈表,結點型別 typedef struct lnodenode 使用遞迴函式反向顯示以h為頭指標的單鏈表的所有值。反向顯示以h為頭指標的單鏈表的所有節點值 void display lnode h 為什麼要把輸出語句放在遞迴函式display 後面呢?因為反向輸出的過程是這樣的 從鏈首...