用golang写的一个链表

近期专门研究了一下golang语言,这个语言还比较新,语法上结合了很多优点,比如动态绑定,多返回值,支持函数对象,如果有C/C++,java,js或python语言基础的朋友应该能很快能迁移到这个新语言上来,goroutine机制帮助我们能更好的写并发程序,总之,golang确实是很有前途的语言,但要具有像java这么丰富的生态链还有很长的路要走。

废话不多说,直接上码

package datastruct

//定义节点
type Node struct{
	data int
	next *Node
}

/***************
* 返回第一个节点
* h 头结点
 ***************/
func getFirst(h *Node) *Node{
	if h.next == nil{
		return nil
	}
	return h.next
}

/***************
* 返回最后一个节点
 */
func getLast(h *Node) *Node{
	if h.next == nil{
		return nil
	}
	var i *Node = h
	for i.next != nil{
		i = i.next
		if i.next == nil{
			return i
		}
	}
	return nil
}

/***************
* 返回长度
 ***************/
func length(h *Node) int{
	var i int = 0
	n := h
	for n.next != nil{
		i++
		n = n.next
	}
	return i
}

/***************
* 插入节点
 ***************/
func insert(h *Node, d *Node, i int) *Node{
	var node *Node = h
	var j int = 1
	for node.next != nil{
		if i == j{
			d.next = node.next
			node.next = d
		}
		node = node.next
		j++
	}
	return h
}
/***************
* 删除节点
 ***************/
func deleteNode(h *Node, i int) *Node{
	var node *Node = h
	var j int = 1
	for node.next != nil{
		if i == j{
			node.next = node.next.next
			break
		}
		node = node.next
		j++
	}
	return h
}
/***************
* 获取节点
 ***************/
func get(h *Node, i int) *Node{
	var node *Node = h
	var j int = 1
	for node.next != nil{
		if i == j{
			return node
		}
		node = node.next
		j++
	}
	return nil
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值