首页 > 其他分享 >Go-单链表

Go-单链表

时间:2022-09-18 02:55:05浏览次数:75  
标签:head 单链 temp no HeroNode next Go nickname

单链表-往最后面插入

复制
package main

import "fmt"

type HeroNode struct {
	no       int
	name     string
	nickname string
	next     *HeroNode
}

//在单链表之后加入
func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) {
	temp := head
	for {
		if temp.next == nil {
			break
		}
		temp = temp.next
	}
	temp.next = newHeroNode
}

//显示链表的所有信息
func ListHeroNode(head *HeroNode) {
	temp := head
	if temp.next == nil {
		fmt.Println("空链表")
		return
	}
	for {
		fmt.Printf("[%d,%s,%s]==>", temp.next.no, temp.next.name, temp.next.nickname)
		temp = temp.next
		if temp.next == nil {
			break
		}
	}
}

func main() {
	head := &HeroNode{} //头结点不需要初始化
	hero1 := &HeroNode{
		no:       1,
		name:     "宋江",
		nickname: "及时雨",
	}
	hero2 := &HeroNode{
		no:       2,
		name:     "卢俊义",
		nickname: "玉麒麟",
	}
	InsertHeroNode(head, hero1)
	InsertHeroNode(head, hero2)
	ListHeroNode(head)

}

单链表的有序插入

复制
package main

import "fmt"

type HeroNode struct {
	no       int
	name     string
	nickname string
	next     *HeroNode
}

//在单链表之后加入
func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) {
	temp := head
	flag := true
	for {
		if temp.next == nil {
			break
		} else if temp.next.no > newHeroNode.no {
			break
		} else if temp.next.no == newHeroNode.no {
			flag = false
			break
		}
		temp = temp.next
	}
	if !flag {
		fmt.Println("对不起,已经存在no=", newHeroNode.no)
		return
	} else {
		newHeroNode.next = temp.next
		temp.next = newHeroNode
	}
}

//显示链表的所有信息
func ListHeroNode(head *HeroNode) {
	temp := head
	for {
		if temp.next == nil {
			return
		}
		fmt.Printf("[%d,%s,%s]==>", temp.next.no, temp.next.name, temp.next.nickname)
		temp = temp.next
		if temp.next == nil {
			break
		}
	}
}

func main() {
	head := &HeroNode{} //头结点不需要初始化
	hero1 := &HeroNode{
		no:       1,
		name:     "宋江",
		nickname: "及时雨",
	}
	hero2 := &HeroNode{
		no:       2,
		name:     "卢俊义",
		nickname: "玉麒麟",
	}
	hero3 := &HeroNode{
		no:       3,
		name:     "林冲",
		nickname: "豹子头",
	}
	InsertHeroNode(head, hero1)
	InsertHeroNode(head, hero3)
	InsertHeroNode(head, hero2)
	ListHeroNode(head)

}

单链表的有序插入(允许序号重复)

复制
package main

import "fmt"

type HeroNode struct {
	no       int
	name     string
	nickname string
	next     *HeroNode
}

//在单链表之后加入
func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) {
	temp := head
	for {
		if temp.next == nil {
			break
		} else if temp.next.no > newHeroNode.no {
			break
		}
		temp = temp.next
	}
	newHeroNode.next = temp.next
	temp.next = newHeroNode
}

//显示链表的所有信息
func ListHeroNode(head *HeroNode) {
	temp := head
	for {
		if temp.next == nil {
			return
		}
		fmt.Printf("[%d,%s,%s]==>", temp.next.no, temp.next.name, temp.next.nickname)
		temp = temp.next
		if temp.next == nil {
			break
		}
	}
}

func main() {
	head := &HeroNode{} //头结点不需要初始化
	hero1 := &HeroNode{
		no:       1,
		name:     "宋江",
		nickname: "及时雨",
	}
	hero2 := &HeroNode{
		no:       2,
		name:     "卢俊义",
		nickname: "玉麒麟",
	}
	hero3 := &HeroNode{
		no:       2,
		name:     "林冲",
		nickname: "豹子头",
	}
	InsertHeroNode(head, hero3)
	InsertHeroNode(head, hero2)
	InsertHeroNode(head, hero1)
	ListHeroNode(head)

}

 

标签:head,单链,temp,no,HeroNode,next,Go,nickname
From: https://www.cnblogs.com/wuchangblog/p/16704102.html

相关文章

  • 数据结构一: golang 单向队列
    队列是什么,如何理解队列?队列一般称queue,是一个有序列表队列一般的原则为:先进先出【谁先来,谁先走】队列一般的场景可以想象:银行取现排队,移动营业厅排队,买咖啡排队等例......
  • 我的Go并发之旅、01 并发哲学与并发原语
    注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调......
  • 在Go语言中,你是怎样使用Json的方法
    Encode将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error:func Marshal(v interface{}) ([]byte, error)Marshal函数将会递归遍历整个对象,依次按成......
  • 一文理解golang中的链表
    每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是......
  • django框架之模型层-Ajax
    目录Ajax基本操作数据编码格式Ajax携带文件数据Ajax回调函数参数问题sweetalter介绍django自带的序列化组件图书管理系统Ajax基本操作1.Ajax:js自带的功能(学习的是jQuery......
  • 【django学习-11】模板3:自定义标签与过滤器
    前言:Django虽然内置了二十多种标签和六十多种过滤器,但是为了给Web开发者提供更好使用体验,Django也提供了自定义标签与过滤器的功能。当内置标签与过滤器满足不了实际......
  • mongodb 基本概念
    文档是mongodb的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录集合一组文档的集合,文档存放的是数据,集合内的结构是可以不同的,集......
  • IAR Temple Project add some codes cannot go to the accure location,why
    https://www.iar.com/knowledge/support/technical-notes/ide/troubleshooting-the-embedded-workbench-ide/......
  • 【Django】简单的图书管理系统
    目录1.数据准备2.首页搭建3.书籍展示4.书籍添加5.书籍编辑6.书籍删除1.数据准备classBook(models.Model):"""图书表"""title=models.CharField(max_length=......
  • python3 - Django3.2框架
    提示:web开发已有php、java,而python在这方面,没有优势,python的优势在于:爬虫、人工智能、大数据分析等,python在web开发这方面,没必要掌握;版本:稳定版本:3.2(py3.6-3.10)、4.2(py3.9-......