介绍
链表是有序的队列, 他在内存中的分布
package mainimport ("fmt""os")type Node struct {No intData stringnext *Node}// 链表最后追加一个节点func AddNode(head *Node, nextNode *Node) {temp := headfor {if temp.next == nil {break}temp = temp.next}temp.next = nextNode}// 中间插入节点func InsertNode(head *Node, nextNode *Node) {temp := headflag := truefor {if temp.next == nil {break} else if temp.next.No > nextNode.No {break} else if temp.No == nextNode.No {flag = falsebreak}temp = temp.next}if !flag {fmt.Printf("已经存在", nextNode.No)return}nextNode.next = temp.nexttemp.next = nextNode}func deleteNode(head *Node, delNode *Node) {temp := headflag := falsefor {if temp.next == nil{break} else if temp.next.No == delNode.No {flag = truebreak}temp = temp.next}if !flag {fmt.Printf("没有找到该节点 %v \n" , delNode.No)return}temp.next = temp.next.nextreturn}func ListNode(head *Node) {temp := headfor {if temp.next == nil {fmt.Printf("没有节点了! \n")break}temp = temp.nextfmt.Printf("node : %v \n", temp)}}func main() {head := &Node{}var key stringvar cont stringvar no intfor {fmt.Printf("输入节点操作 \n")fmt.Printf("add\n")fmt.Printf("show\n")fmt.Printf("delete\n")fmt.Printf("exit\n")fmt.Scanln(&key)switch key {case "add":fmt.Printf("输入节点内容:")fmt.Scanln(&cont)fmt.Printf("输入节点no:")fmt.Scanln(&no)nextNode := &Node{No: no,Data: cont,}//AddNode(head, nextNode)InsertNode(head, nextNode)case "show":ListNode(head)case "delete":fmt.Printf("输入节点 no:")fmt.Scanln(&no)delNode := &Node{No: no,}deleteNode(head, delNode)case "exit":os.Exit(0)}}}
