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