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
    }
    
  • 相关阅读:
    遮罩
    css3 transform
    jq图片懒加载
    transition
    css3动画
    div水平垂直居中的方法
    一行文字的时候,文字在整个盒子中垂直水平居中,超过一行之后,文字在盒子中垂直水平居中,文字左对齐
    10个你可能没用过的Linux命令
    sed命令详解
    linux中的快捷键汇总
  • 原文地址:https://www.cnblogs.com/lurenq/p/12081860.html
Copyright © 2011-2022 走看看