博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表翻转
阅读量:2492 次
发布时间:2019-05-11

本文共 1273 字,大约阅读时间需要 4 分钟。

思路一:借用新的单链表

新建一个新的单向链表,从头循环处理旧链表节点,依次插入到新单向链表的头节点,最后用新单向链表的头节点替换旧单向链表的头节点

package mainimport (	"fmt")// 链表type LinkList struct {
HeadNode *LinkNode}//单向链表节点type LinkNode struct {
Data int32 // 链表上的数据 Next *LinkNode // 指针指向下一个数据}// 在头部添加数据,把原来的头部替换掉,还需要把现在的元素指向原来的头部func (self *LinkList) Add(value int32) {
node := &LinkNode{
Data:value,} node.Next=self.HeadNode self.HeadNode = node}// 在尾部添加数据,需要从头部开始遍历,直到nilfunc (self *LinkList)Append(value int32) {
newNode := &LinkNode{
Data:value} node := self.HeadNode // 首部是空 if node == nil {
self.HeadNode = newNode } else {
for node.Next != nil {
node = node.Next } // 已经得到最后的元素 node.Next = newNode }}// 循环链表输出元素func (self *LinkList)forEachLink() {
node := self.HeadNode for node != nil {
fmt.Printf("当前元素 :%v\n", node.Data) node = node.Next }}// 单链表翻转func (self *LinkList)flip() {
linkList :=NewLinkList() node := self.HeadNode for node!=nil {
linkList.Add(node.Data) node = node.Next } self.HeadNode=linkList.HeadNode}func NewLinkList() LinkList {
linkList := LinkList{
HeadNode:nil} return linkList}func main() {
linkList :=NewLinkList() for i:=0;i<7;i++{
linkList.Append(int32(i)) } linkList.forEachLink() linkList.flip() linkList.forEachLink()}

转载地址:http://edbrb.baihongyu.com/

你可能感兴趣的文章
JPA自定义sql
查看>>
BigDecimal正确使用了吗?
查看>>
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>
vue+springboot打包发布
查看>>
XSL 开发总结
查看>>
beta阶段第六次scrum meeting
查看>>
SpringBoot+MybatisPlus实现批量添加的两种方式
查看>>
vue 设计结构
查看>>
Sqlerver2005+按照ID分组取前几条
查看>>
Python的编码和解码
查看>>
docker
查看>>
停车场系统安全岛设计施工要求
查看>>
Docker实战
查看>>
asp.net core结合Gitlab-CI实现自动化部署
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
查看>>
EasyNVR H5无插件摄像机直播解决方案前端解析之:关于直播页面和视频列表页面切换的问题...
查看>>
django搭建一个小型的服务器运维网站-拿来即用的bootstrap模板
查看>>
redis事务
查看>>