zoukankan      html  css  js  c++  java
  • go 语言实现栈原理

    package main
    
    import "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 = 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 == 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
    }
    
  • 相关阅读:
    Android资源列表
    GTD资源列表[070826更新] [GTD]
    Table显示滚动条
    html语言中的meta元素
    GridView分页的实现
    图解CSS的padding,margin,border属性
    javascript moveTo() 函数
    IE6 中的最大最小寬度和高度 css 高度 控制(兼容版本)
    enableEventValidation
    window.resizeTo()和window.open()
  • 原文地址:https://www.cnblogs.com/lurenq/p/12081860.html
Copyright © 2011-2022 走看看