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)
    }
    

      

  • 相关阅读:
    组合和继承
    解决不了问题
    [zz]shared_ptr 在 stl容器中排序的陷阱
    char ** 初始化
    [zz]c++ list sort方法
    [zz]ZeroMQ的学习和研究
    shared_prt自己使用记录
    rapidxml使用笔记
    HDOJ_ACM_I love sneakers!
    HDOJ_ACM_PiggyBank
  • 原文地址:https://www.cnblogs.com/z-jx/p/9062835.html
Copyright © 2011-2022 走看看