求教資料結構,golang實現出棧入棧覆蓋第一個元素

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。**這個程式有問題,將元素入棧時,會覆蓋第一個元素,最後棧中只留下一個2,求大神解答**```gopackage mainimport ("log""fmt")type Stack struct {size int64 //棧的容量top int64 //棧頂data []interface{}}func MakeStack( size int64) Stack{s :=Stack{}s.size=sizes.data =make([]interface{},size)return s}//入棧,空間不足,逐段升高func (s *Stack) Push(e interface{}) bool{if s.IsFull(){log.Printf("棧滿,無法入棧") return false}s.data[s.top]=efmt.Println(s.top)s.top++return true}//出棧,棧頂降低func (s *Stack) Pop() (r interface{},err error){if s.IsEmpty() {err =fmt.Errorf("棧已空,無法完成出棧")log.Printf("棧已空,無法完成出棧")return}s.top--r =s.data[s.top]return}//判斷棧是否滿func (s *Stack) IsFull() bool{return s.top==s.size}//判斷棧是否為空白func (s *Stack) IsEmpty() bool{return s.top==0}func (s *Stack) Traverse(fn func(r interface{}),goorto bool) {//go true遍曆進棧 false 遍曆出棧if goorto { var i int64= 0for ;i<s.top;i++ {fn(s.data[i])}}else{for i:=s.top-1;i>=0;i-- {fn(s.data[i])}}}//進棧出棧實驗//求將十進位1348轉化為八進位func TestStack() {var fn_c = func(n int) {s :=MakeStack(10)for {if n==0 {break}s.Push(n%8)n =n/8}s.Traverse(func(r interface{}) {fmt.Print(r)},false)}fn_c(1348)}func main() {TestStack()}```230 次點擊  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.