Go数据结构与算法-实现链式栈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yang731227/article/details/85060098

title: Go数据结构与算法-实现链式栈
tags: go,算法


介绍

前面我们看了栈的数组实现,本文来看看用链表实现栈的方法。

演示

package main

import (
	"errors"
	"fmt"

)

type  Node struct{
	data  interface{}
	next * Node
}

type  LinkStack interface {
	IsEmpty() bool
	Push(value interface{})
	Pop()(interface{},error)
	Length() int
}

func NewStack()*Node{
	return &Node{}
}

func (n*Node)IsEmpty() bool{  //判断是否为空
	return n.next==nil
}
func (n*Node)Push(value interface{}){
	newnode:=&Node{data:value} //初始化
	newnode.next=n.next
	n.next=newnode
}
func (n*Node)Pop()(interface{},error){
	if n.IsEmpty()==true{
		return  nil,errors.New("bug")
	}
	value :=n.next.data
	n.next=n.next.next
	return  value,nil
}
func (n*Node)Length() int{
	pnext:=n
	length:=0
	for pnext.next!=nil{//返回长度
		pnext=pnext.next
		length++
	}
	return length
}
func  main(){
	mystack:=NewStack()
	for i:=0;i<100;i++{
		mystack.Push(i)
	}
	//fmt.Println(mystack.Pop())
	//fmt.Println(mystack.Pop())
	for data,err:=mystack.Pop();err==nil;data,err=mystack.Pop(){
		fmt.Println(data)
	}

}

猜你喜欢

转载自blog.csdn.net/yang731227/article/details/85060098
今日推荐