亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遍歷數組對

遍歷數組對

Go
交互式愛情 2023-07-10 17:46:02
我試圖通過一些簡單的圖表更好地理解 golang。我在課堂上嘗試過這個,但我無法真正弄清楚。問題是我知道解決方案非常簡單。我試圖讓它通過讀取邊緣來打印每條單獨的路徑。我已經玩過相當多的代碼了,這確實是我能得到的最簡單的形式。package mainimport "fmt"type Graph struct {    Edges map[string][]string}// NewGraph: Create graph with n nodes.func NewGraph() *Graph {    return &Graph{        Edges: make(map[string][]string),    }}// AddEdge: Add an edge from u to v.func (g *Graph) AddEdge(u, v string) {    g.Edges[u] = append(g.Edges[u], v)}func (g *Graph) Walk(u string) {    for _, v := range g.Edges[u] {            fmt.Printf("%s -> %s", u, v)        g.Walk(v)    }}func (g *Graph) adjacentEdgesExample() {    fmt.Println("Printing all edges in graph.")    for u, adjacent := range g.Edges { // Nodes are labelled 0 to N-1.        for _, v := range adjacent {            // Edge exists from u to v.            fmt.Printf("Edge: %s -> %s\n", u, v)        }    }}func main() {    g := NewGraph()    g.AddEdge("A", "B")    g.AddEdge("A", "D")    g.AddEdge("D", "E")    g.AddEdge("B", "C")    g.adjacentEdgesExample()    fmt.Println(g.Edges)    g.Walk("A")}示例位于:https://goplay.space/#Ro1puZYgu5X其結果是:Printing all edges in graph.Edge: B -> CEdge: A -> BEdge: A -> DEdge: D -> Emap[A:[B D] B:[C] D:[E]]A -> BB -> CA -> DD -> E% 我希望看到 Walk 方法做這樣的事情:A -> B -> CA -> D -> E
查看完整描述

1 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

實際上,代碼中有很多內容可以更改。Walk但是,對檢查是否為基邊的函數的快速修復可以修復格式問題。main現在應該從with調用它g.Walk("A", true)

func (g *Graph) Walk(u string, f bool) {

? ? for _, v := range g.Edges[u] {

? ? ? ? if f == true {

? ? ? ? ? ? fmt.Printf("\n%s -> %s", u, v)

? ? ? ? } else {

? ? ? ? ? ? fmt.Printf(" -> %s", v)

? ? ? ? }

? ? ? ? g.Walk(v, false)

? ? }

}

編輯 實際上,您可以只檢查f然后將您設置為"\n + u"相應的:


func (g *Graph) Walk(u string, f bool) {

? ? for _, v := range g.Edges[u] {

? ? ? ? if f {

? ? ? ? ? ? u = "\n" + u

? ? ? ? } else {

? ? ? ? ? ? u = ""

? ? ? ? }

? ? ? ? fmt.Printf("%s -> %s", u, v)

? ? ? ? g.Walk(v, false)

? ? }

}


查看完整回答
反對 回復 2023-07-10
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號