当前位置: 首页 > news >正文

网站开发 数据库贵州 网站建设

网站开发 数据库,贵州 网站建设,佛山市专注网站建设平台,制作手机端网站文章目录 链表的相关知识链表的创建:模拟方式建立链表的**递归创建** 链表的读取遍历读取递归读取 完整代码 链表的相关知识 链表有时会具有头节点#xff0c;头节点的指针指向第一个节点的地址#xff0c;其本身的数据域可以根据自己的选择进行赋值   接下来我将以将int转… 文章目录 链表的相关知识链表的创建:模拟方式建立链表的**递归创建** 链表的读取遍历读取递归读取 完整代码 链表的相关知识 链表有时会具有头节点头节点的指针指向第一个节点的地址其本身的数据域可以根据自己的选择进行赋值   接下来我将以将int转换为链表为例进行演示如果有什么地方可以改进也希望路过大神能够指出 链表的创建: 链表的结构定义一般如下即由本身的数据和指向下一个节点的指针构成 type ListNode struct {Val intNext *ListNode//不能直接赋值listnode避免产生嵌套引用 }链表的创建每个节点存储一位数字在创建的过程中 我们需要设置中间的可变节点不然我们可能会丢失对链表的第一个节点的索引以下的例子中我们就使用middle为中间节点将head设置为头节点并代表完整的链表 模拟方式建立 我们利用迭代的方法只要还存在num就更新创建一个新的节点 // 尝试建立有头节点的链表关键在于赋值给middle.next func CreateList(nums int) *ListNode {Head : new(ListNode) //这代表一整个链表并通过这里的头节点进行标注方便该链表的引用middle : Head //middle视作Head链表的中间节点其一直改变for nums 0 {middle.Next ListNode{Val: nums % 10}//头节点赋值方法fmt.Printf(middle.Val: %v\n, middle.Val)middle middle.Nextnums / 10}return Head }链表的递归创建 // 递归建立链表 func RecurCreateList(nums int) *ListNode {//在递归时好像不需要单独保存头节点位置后续的位置会递归存储在next中不用考虑被覆盖的问题middle : new(ListNode) //建立头指针其指针不变// 123%103// 12.3%102// 1.23%101// 120%100// 12 %102// 1.2%101if nums 1 || nums%10 0 {middle.Val nums % 10fmt.Printf(middle.Val: %v\n, middle.Val)if nums 1 {nums / 10middle.Next RecurCreateList(nums)}}return middle }链表的读取 遍历读取 链表读取时我们需要根据是否具有头节点进行一定的调整下面是使用遍历迭代进行创建的过程 // 尝试遍历读取链表 func ReadList(L ListNode) {middle : L //将头节点赋予这里的中间节点middle//循环读取链表的内容for middle.Next ! nil {v : middle.Next.Val //由于我们这里判断的是本身节点是否为空所以在输出时使用下一节点的值进行输出避免错过某个值fmt.Printf(v: %v\n, v)// // fmt.Printf(L: %v\n, L)middle *middle.Next// // fmt.Printf(L: %v\n, L)} }递归读取 下面为使用递归进行读取的方法 由于节点的定义过程中使用内嵌在建立相关函数时都使用指针比较方便[ 虽然前面都没注意:( ], // 尝试递归读取链表 func RecurReadList(L *ListNode) {fmt.Printf(L.Val: %v\n, L.Val) //打印出此节点中的Val//如果本结点的指针不为空即还有下一个节点继续读取if L.Next ! nil {RecurReadList(L.Next) //将下个节点的指针传入}//如果运行到这里说明指针为空函数也就到此结束了 } 完整代码 package mainimport (fmt )type ListNode struct {Val intNext *ListNode }func main() {// l : CreateList(13)l : RecurCreateList(13)fmt.Printf(l: %v\n, *l)// ReadList(*l)RecurReadList(l)// RecurReadList(l.Next)// fmt.Println(l.Next.Val) }// 尝试建立有头节点的链表关键在于赋值给middle.next func CreateList(nums int) *ListNode {Head : new(ListNode) //这代表一整个链表并通过这里的头节点进行标注方便该链表的引用middle : Head //middle视作Head链表的中间节点其一直改变for nums 0 {middle.Next ListNode{Val: nums % 10} //头节点赋值方法fmt.Printf(middle.Val: %v\n, middle.Val)middle middle.Nextnums / 10}return Head }// 递归建立链表 func RecurCreateList(nums int) *ListNode {//在递归时好像不需要单独保存头节点位置后续的位置会递归存储在next中不用考虑被覆盖的问题middle : new(ListNode) //建立头指针其指针不变// 123%103// 12.3%102// 1.23%101// 120%100// 12 %102// 1.2%101if nums 1 || nums%10 0 {middle.Val nums % 10fmt.Printf(middle.Val: %v\n, middle.Val)if nums 1 {nums / 10middle.Next RecurCreateList(nums)}}return middle }// 尝试遍历读取链表 func ReadList(L ListNode) {middle : L //将头节点赋予这里的中间节点middle//循环读取链表的内容for middle.Next ! nil {v : middle.Next.Val //由于我们这里判断的是本身节点是否为空所以在输出时使用下一节点的值进行输出避免错过某个值fmt.Printf(v: %v\n, v)// // fmt.Printf(L: %v\n, L)middle *middle.Next// // fmt.Printf(L: %v\n, L)} }// 尝试递归读取链表 func RecurReadList(L *ListNode) {fmt.Printf(L.Val: %v\n, L.Val) //打印出此节点中的Val//如果本结点的指针不为空即还有下一个节点继续读取if L.Next ! nil {RecurReadList(L.Next) //将下个节点的指针传入}//如果运行到这里说明指针为空函数也就到此结束了 }
http://www.dnsts.com.cn/news/9867.html

相关文章:

  • 高端网站设计平台360怎么做网站
  • 二维码转换成短链接在线杭州最好的seo公司
  • 大连做网站比较好的鄂尔多斯市网站建设
  • 服装网站建设与实现国内购物网站排名
  • 网站域名 评估作价百度网站的建设
  • 微信如何做自己的网站北京 网站定制开发
  • 前端网站开发实例视频中国建设信息港网站
  • 南京的网站制作公司百度云建站WordPress
  • 美妆网站开发背景wordpress加描述
  • 做最优秀的自己演讲视频网站网站建设流程教案
  • 中国万维网官网域名注册网站做网站需要撑握哪些技术
  • jsp做的网站怎嘛用网络推广培训去哪里好
  • 宁夏住房和城乡建设厅门户网站龙华网站建设招聘
  • 唯品会网站架构自建网站系统
  • wordpress 建立第二个网站郴州365网
  • 站长检测同ip网站很多怎么办网站建设属于什么岗位
  • 企业文化 设计 咨询搜索引擎优化seo方案
  • 软件公司网站 手机版产品营销推广的方案
  • h5网站建设wordpress下载附件
  • 建设银行梅州分行网站淘客网站建设要求
  • 青岛 网站优化网站建设维护工作职责
  • 淘客网站推广免备案企业网站搜索优化外
  • 企业网站系统排名看网站有没有做404
  • 怎样自己免费建设一个网站wordpress图片超链接
  • 建设网站业务竞争大百度竞价排名案例分析
  • 响应式网站模板代码seo网站优化怎么做
  • 一个网站开发成本在百度做橱柜网站
  • 自己做简历网站应用商城软件下载 app
  • 新的网站建设一般多少钱如何做网页游戏代理
  • 浙江五联建设有限公司网站直接在原备案号下增加新网站