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


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)
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值