【Go】逆順リストを書く
概要
いまさらですが逆順リストを書く。 元ネタは改訂第4版 C言語によるはじめてのアルゴリズム入門。
本題
以下ソースコード。
package main import ( "fmt" ) type node struct { name string tel string pointer *node } func main() { var head *node = nil for{ n := new(node) fmt.Println("name tel") fmt.Scanf("%s %s", &n.name, &n.tel) n.pointer = head head = n if(!next()){ show(n) break } } } func show(n *node) { fmt.Println("/////逆順リスト/////") for{ if(n == nil){ break } fmt.Printf("%s %s", n.name, n.tel) fmt.Println("") n = n.pointer } } func next() bool { continue_str := "" for{ fmt.Println("continue? [y/n]") fmt.Scanf("%s", &continue_str) if(continue_str == "y"){ return true } if(continue_str == "n"){ return false } } }
結果
name tel
と聞かれるので適当な文字列を半角スペース区切りで2つ入力する。
continueの旨を聞かれるのでy/nで回答。
yをすると、もう一度name tel
と聞かれる繰り返し。
nをすると作られたリストが表示される。
name tel aaa 000 continue? [y/n] b continue? [y/n] y name tel bbb 111 continue? [y/n] n /////逆順リスト///// bbb 111 aaa 000