zoukankan      html  css  js  c++  java
  • go语言 链表练习

    package main
    
    import "fmt"
    
    //定义节点
    type Node struct {
    	Data int
    	Next *Node
    }
    
    /*
    * 返回第一个节点
    * h 头结点
     */
    func GetFirst(h *Node) *Node {
    	if h.Next == nil {
    		return nil
    	}
    	return h.Next
    }
    
    /*
    * 返回最后一个节点
    * h 头结点
     */
    func GetLast(h *Node) *Node {
    	if h.Next == nil {
    		return nil
    	}
    	i := h
    	for i.Next != nil {
    		i = i.Next
    		if i.Next == nil {
    			return i
    		}
    	}
    	return nil
    }
    
    //取长度
    func GetLength(h *Node) int {
    	var i int = 0
    	n := h
    	for n.Next != nil {
    		i++
    		n = n.Next
    	}
    	return i
    }
    
    //插入一个节点
    //h: 头结点
    //d:要插入的节点
    //p:要插入的位置
    func Insert(h, d *Node, p int) bool {
    	if h.Next == nil {
    		h.Next = d
    		return true
    	}
    	i := 0
    	n := h
    	for n.Next != nil {
    		i++
    		if i == p {
    			if n.Next.Next == nil {
    				n.Next = d
    				return true
    			} else {
    				d.Next = n.Next
    				n.Next = d.Next
    				return true
    			}
    		}
    		n = n.Next
    		if n.Next == nil {
    			n.Next = d
    			return true
    		}
    	}
    	return false
    }
    
    //取出指定节点
    func GetLoc(h *Node, p int) *Node {
    	if p < 0 || p > GetLength(h) {
    		return nil
    	}
    	var i int = 0
    	n := h
    	for n.Next != nil {
    		i++
    		n = n.Next
    		if i == p {
    			return n
    		}
    	}
    	return nil
    }
    
    func main() {
    	var h Node
    	li := []int{2, 4, 3}
    	for _, l := range li {
    		var d Node
    		d.Data = l
    		Insert(&h, &d, l)
    	}
    
    	var i Node
    	ls := []int{5, 6, 4}
    	for _, s := range ls {
    		var dd Node
    		dd.Data = s
    		Insert(&i, &dd, s)
    	}
    
    	sum := 0
    	sum = GetLoc(&h, 3).Data*100 + GetLoc(&h, 2).Data*10 + GetLoc(&h, 1).Data + GetLoc(&i, 3).Data*100 + GetLoc(&i, 2).Data*10 + GetLoc(&i, 1).Data
    	fmt.Println(sum)
    }
    

      

  • 相关阅读:
    类的加载过程
    算法模板之基数排序
    算法模板之Dijkstra
    算法模板之SPFA
    算法模板之树状数组
    算法模板之排序
    深入JVM-自动内存管理(读书笔记)
    VMware Fault-Tolerant Virtual Machine 论文总结
    深入JVM--高效并发(读书笔记)
    欧拉素数筛
  • 原文地址:https://www.cnblogs.com/z-jx/p/9062835.html
Copyright © 2011-2022 走看看