数据结构--单向链表
单向链表的一种Go语言实现
package mainimport "fmt"type Node struct {no intname stringnext *Node
}//实现尾部插入一个节点到链表(队列Push的一种实现)
func InsertTail(head *Node, newNode *Node){//先找到链表的最后一个节点,需要保持头结点不动,这里创建一个中间临时节点temp := head//遍历链表直到最后一个节点进行插入for {if temp.next == nil { //这个条件就是链表的最后位置break}temp = temp.next}//将新的节点接入到链表尾部temp.next = newNode
}//实现有序插入一个节点到链表中
func InsertSort(head, newNode *Node){temp := head//重点:插入时必须要在temp的位置让temp.next.no和newNode.no进行比较,不然会错过插入时机for {if temp.next == nil { //说明已经在链表的尾部了//注意:下面两行的顺序不能颠倒newNode.next = temp.nexttemp.next = newNodebreak} else if temp.next.no >= newNode.no {newNode.next = temp.nexttemp.next = newNodebreak}temp = temp.next}
}//实现头部插入节点(队列Push的一种实现)
func InsertHead(head, newNode *Node){newNode.next = head.nexthead.next = newNode
}//实现一个删除链表节点的函数
func Delete(head *Node, node *Node) {temp := headfor {if temp.next == nil { //说明已经在链表的尾部了,没有找到要删除的节点break} else if temp.next.no == node.no {temp.next = node.next//下面这种方法也可以,不过理解起来有点绕//temp.next = temp.next.nextbreak}temp = temp.next}
}//实现一个头部删除链表节点的函数(队列Pop的一种实现)
func DeleteHead(head *Node){if head.next == nil{return}else {head.next = head.next.next}
}//实现一个尾部删除链表节点的函数(队列Pop的一种实现)
func DeleteTail(head *Node){temp := headfor {if temp.next == nil{ //说明链表为空return}else if temp.next.next == nil{temp.next = nilbreak}temp = temp.next}
}//实现显示链表中所有节点信息
func List(head *Node){//前提是不能改变头结点temp := headif temp.next == nil {fmt.Println("链表为空")return}for {fmt.Printf("%d %s -->", temp.next.no, temp.next.name) //打印下一个节点的信息temp = temp.nextif temp.next == nil {break}}
}func main(){//定义一个头结点head := &Node{}//定义一个节点信息node1 := &Node{no: 1,name: "Number1",next: nil,}node2 := &Node{no: 2,name: "Number2",next: nil,}node3 := &Node{no: 3,name: "Number3",next: nil,}node4 := &Node{no: 2,name: "Number4",next: nil,}InsertTail(head, node1)InsertTail(head, node2)InsertSort(head, node3)InsertSort(head, node2)InsertSort(head, node1)InsertSort(head, node4)Delete(head, node4)InsertHead(head, node1)InsertHead(head, node2)InsertHead(head, node3)InsertHead(head, node4)DeleteHead(head)DeleteTail(head)List(head)
}
数据结构--单向链表相关推荐
- 数据结构-单向链表解决学生录入问题
数据结构-单向链表 单向链表实现学生录入程序 通过main函数实现一切功能 通过调用函数实现 传送门结束 单向链表实现学生录入程序 将用户输入的不定个数的学生成绩按顺序编号并保存,以用户输入0作为录入 ...
- 数据结构单向链表线性结构_线性数据结构链表为何以及如何解释
数据结构单向链表线性结构 Imagine you have gone to a crowded place, say to a k-pop concert with your friends and ...
- 【单向链表】数据结构——单向链表的介绍与代码实现笔记
从今天开始将修炼数据结构专栏,将持续更新,分模块学习. 数据结构--单向链表 一.数据结构 1.什么是数据结构? 2.逻辑结构和物理结构 二.链表--线性结构 1.首先介绍下链表和数组的区别 2.链表 ...
- 简单数据结构——单向链表
恩,准备重最简单的东西复习和学习一遍.那就从数据结构开始吧. 我尽量用公司的代码标准来进行编码.希望对刚刚开始学习数据结构的有一些帮助吧. 使我的代码可以简单易懂. 我记得上数据结构的第一个程序就是链 ...
- 数据结构—单向链表(详解)
一.链表基础 链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节点等.链表 ...
- 数据结构 | 单向链表学习总结
单向链表学习总结 简介 总结 链表介绍 链表定义 链表函数 计算链表的长度 将列表转换为链表 LeetCode:剑指 Offer 22. 链表中倒数第k个节点 双向链表学习总结:python | 双向 ...
- 数据结构——单向链表
链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成. 结点API设计 类名 N ...
- 数据结构——单向链表-双向链表
1.单向链表按位置修改 //按位置修改 int updata_pos(linklist *L,int pos,datatype new_e) {if(NULL==L||empty(L)||pos< ...
- 数据结构单向链表(C++)
head文件 #include<iostream> #define status int #define OK 1 #define ERROR 0 using namespace std; ...
最新文章
- 获取序列全排列Java,java中全排列的生成算法汇总
- 解题报告(二)多项式问题(多项式乘法及其各种运算)(ACM/ OI)超高质量题解
- 如何关闭PHP的安全模式,Linux下的Apache和PHP安全设置,如何开启PHP的安全模式
- 使用FPM快速生成RPM包
- BZOJ4401:块的计数(乱搞)
- mysql变更AUTO_INCREMENT值
- java课程设计拼图_基于Java拼图游戏的设计与实现(含录像)
- java spark yarn_《Spark官方文档》在YARN上运行Spark
- 数据挖掘 股价预测_股票成交量很低,但股价跌得快,说明了什么?(此文无价)...
- QNAP 修复 NAS 备份应用中的严重漏洞
- linux 编程 调度,Linux的进程线程及调度
- Oracle表名、列名、约束名的长度限制
- 白杨SEO:关键词定位与兴趣定位是什么?这两类推广渠道在网络营销上有什么差异?
- STC15单片机使用AT命令的C语言编程
- 谷歌搜索技巧大全,google高级搜索语法指令怎么用
- 随机搜索 /爬山法/模拟退火/遗传算法
- python实现指纹识别毕业论文_指纹识别系统设计毕业论文+开题报告+翻译及原文+设计源码...
- 关于电脑网络显示红叉的解决方法
- android线程间通信的几种方法_Android进程间和线程间通信方式
- 小型仓库管理系统MySQL
热门文章
- java 输出_使用IntelliJ IDEA2020.2.2 x64新建java项目并且输出Hello World
- 弱电工程项目综合布线估算方法和公式
- 火神山医院紧急招募IT运维志愿者需求
- 哈工大计算机系女生的宿舍,哈工大的硕博士们,这次被学校折腾惨了!
- java中大数开方_Java中的大数运算
- 快速学python爬虫_Python爬虫丨应当如何快速高效学习
- Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
- Bug总结:python语言中出现的import error错误的解决思路
- NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)
- AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟