近期专门研究了一下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
}