前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用python创建一个链表

用python创建一个链表

作者头像
算法与编程之美
发布2024-04-14 08:32:00
470
发布2024-04-14 08:32:00
举报

1 问题

创建链表过程中的过程可以简述为:如果发现头指针指向NULL,也就是链表此时为空,没有一个结点,那就让头指针指向这个结点;如果发现头指针已经指向一个结点了,即链表不为空,那么就通过遍历找到最后那个结点,让最后那个结点指向新创建的那个结点,也就是每次新创建的结点都在最后。

2 方法

1.声明一个头指针(如果有必要,可以声明一个头节点); 2.创建多个存储数据的节点,在创建的过程中,要随时与其前驱节点建立逻辑关系。

代码清单 1

class Node: def __init__(self, data): self.data = data self.next = None def get_data(self): return self.dataclass List: def __init__(self, head): self.head = head def is_empty(self): return self.get_len() == 0 def get_len(self): length = 0 temp = self.head while temp is not None: length += 1 temp = temp.next return length def append(self, node): temp = self.head while temp.next is not None: temp = temp.next temp.next = node def delete(self, index): if index < 1 or index > self.get_len(): print("给定位置不合理") return if index == 1: self.head = self.head.next return temp = self.head cur_pos = 0 while temp is not None: cur_pos += 1 if cur_pos == index-1: temp.next = temp.next.next temp = temp.next def insert(self, pos, node): if pos < 1 or pos > self.get_len(): print("插入结点位置不合理") return temp = self.head cur_pos = 0 while temp is not Node: cur_pos += 1 if cur_pos == pos-1: node.next = temp.next temp.next =node break temp = temp.next def reverse(self, head): if head is None and head.next is None: return head pre = head cur = head.next while cur is not None: temp = cur.next cur.next = pre pre = cur cur = temp head.next = None return pre def print_list(self, head): init_data = [] while head is not None: init_data.append(head.get_data()) head = head.next return init_dataif __name__==&apos;__main__&apos;: head=Node(&apos;head&apos;) link=List(head) for i in range(10): node=Node(i) link.append(node) print(link.print_list(head))

3 结语

链表作为一种数据结构,它是用来存储数据的,举一个很形象的例子,就比如说以前玩的那个贪吃蛇,就是链表的一个很好的应用。在玩贪吃蛇的时候,食物就相当于一个新的结点,而在链表中,有很多对链表的操作,比如说:头插,尾插,排序插,中间插等等你可以想象成,将贪吃蛇吃到的食物是放在,头,尾,或者中间,或者按颜色的顺序进行排列,其实链表不难,理解了之后,写起来也是挺有意思的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档