package mainimport "fmt"type StackNode struct { Data interface{} //資料 Next *StackNode //下一個節點}//創建鏈堆疊func CreateStack(Data ...interface{}) *StackNode { if len(Data) == 0 { return nil } s := new(StackNode) //記錄下一個節點 var nextNode *StackNode = nil for _, v := range Data { //1,2,3,4,5 //創建新節點存盤資料 newNode := new(StackNode) newNode.Data = https://www.cnblogs.com/lurenq/p/v s = newNode //如果下一個節點不為空 將當前節點的下一個節點設定上一次節點 //if nextNode != nil { s.Next = nextNode //} //下一個節點為當前節點 nextNode = s } return s}//列印鏈堆疊func PrintStack(s *StackNode) { if s == nil { return } for s != nil { fmt.Print(s.Data," ") s = s.Next }}//鏈堆疊個數func LengthStack(s *StackNode) int { if s == nil { return -1 } //回圈計算鏈堆疊個數 i := 0 for s != nil { i++ s = s.Next } return i}//入堆疊func Push(s *StackNode, Data interface{}) *StackNode { if s == nil { return nil } if Data =https://www.cnblogs.com/lurenq/p/= nil { return s } //新建節點 newNode := new(StackNode) newNode.Data = Data newNode.Next = s return newNode}//出堆疊func Pop(s *StackNode) *StackNode { if s == nil { return nil } nextNode := s.Next s.Next = nil return nextNode}//清空鏈堆疊func Clear(s *StackNode) *StackNode { return nil}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53034.html
標籤:Go
下一篇:GO 語言常用排序
