加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用golang写的一个链表

发布时间:2020-12-16 18:19:27 所属栏目:大数据 来源:网络整理
导读:近期专门研究了一下golang语言,这个语言还比较新,语法上结合了很多优点,比如动态绑定,多返回值,支持函数对象,如果有C/C++,java,js或python语言基础的朋友应该能很快能迁移到这个新语言上来,goroutine机制帮助我们能更好的写并发程序,总之,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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读