GoLang 单链表插入

package main

import    (

            "fmt"
            "math/rand"

)

type Student struct {

        Name     string

        Age         int

        Score       float32

        Next        *Student

}

func     trans(p    *Student)    {

// 遍历函数

        for    p != nil    {

                fmt.Println(*p)
                p= p.Next

        }

}
func    InsertTail(p    *Student)    {

//尾插法插入10个元素

        var    tail = p

        for i:=0; i< 10; i++ {

                stu := &Student{

                        Name: fmt.Sprintf("stu%d", i),

                        Age: rand.Intn(100),

                        Score: rand.Float32()*100,

                }

                tail.Next = stu

                tail = stu

        }

}
func    InsertHead(p  **Student)    {
//头插法
        for    i:=0; i<10; i++ {

                stu := Student  {
		    Name: fmt.Sprintf("stu%d", i),
		    Age: rand.Intn(100),
		    Score:rand.Float32()* 100,
		}

                stu.Next = *p

                *p = &stu


        }
//删除指定元素
func DelNode(p *Student) {
	var prev *Student = p
	for p != nil {
		if p.Name == "stu6" {
			prev.Next = p.Next
			break
		}
		prev = p
		p = p.Next
	}
}

//增加指定位置
func addNode(p *Student, newNode *Student) {

	for p != nil{
		if p.Name == "stu9"{
			newNode.Next = p.Next
			p.Next = newNode
			break
		}
		p = p.Next
	}
}



}
func     main()     {

        var head *Student = new(Student)
	head.Name = "Lihua"
	head.Age = 19
	head.Score = 100

        //InsertTail(head)
	//InsertHead(&head)
	//DelNode(head)

	var newNode *Student = new(Student)

	newNode.Name = "stu1000"
	newNode.Age = 19
	newNode.Score = 100

	//addNode(head, newNode)
	//trans(head)

}

猜你喜欢

转载自blog.csdn.net/zhangyexinaisurui/article/details/80502441
今日推荐