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

镇江个人网站建设产品推广计划

镇江个人网站建设,产品推广计划,网业版,做网站win7好用么1、移除链表元素 题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2: 输入:head [], val 1 输出:[] 示例 3:…

1、移除链表元素

题意:删除链表中等于给定值 val 的所有节点。

示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]

示例 2: 输入:head = [], val = 1 输出:[]

示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]

在这之前,我还是简单的说说在Python中的链表,

因为作为Python小白,我一开始对于Python的链表是很不清晰的。

根据Python中的基本数据类型,很明显没有什么可以直接的表示链表,Python是允许用户自己定义数据类型的,这就是所说的类。

在这里我们就选用类作为链表的节点(链表有两部分,一个是数据域,一个是指针域)

在Python中,类的实例化实际上是创建一个对象,这个对象存储在内存中。当我们调用类的方法时,实际上是在操作这个对象的引用(地址),因此可以用类来表示链表的结点,即链表的结点类型是:用户自定义的类。
 

class ListNode:def __init__(self,data):self.valu = data #表示数据域self.next = None #表示指针域

在我们已经表示了这个链表的节点以后,我们应该如何使用这个节点呢?

head = ListNode(1)

就是通过这个变量去指向这个节点,这个节点的指针域是空,

若我们希望在这个节点后添加节点,我们应该怎么做呢?

要给head所指向的这个节点的next(也就是指针域赋值)

赋什么值呢?

赋的就是想要添加的那个节点的地址

那么这个地址究竟等于什么呢?

这里用类来表示了

class ListNode:def __init__(self,data):self.valu = data #表示数据域self.next = None #表示指针域
head = ListNode(1)
head.next = ListNode(123)

调试过后的结果如下:

如果还想要添加节点呢?

class ListNode:def __init__(self,data):self.valu = data #表示数据域self.next = None #表示指针域
head = ListNode(1)
head.next = ListNode(123)
head = head.next
head.next = ListNode(456)

那大概知道了我们就开始正式的移除链表元素吧:

# 移除链表元素
# 初识链表
class ListNode:def __init__(self,data):self.value = data #表示数据域self.next = None #表示指针域
# head = ListNode(1)
# head.next = ListNode(123)
# head = head.next
# head.next = ListNode(456)dummy_head = ListNode(None)#这是虚拟的头结点
current = dummy_head #用current来指向虚拟头结点,current.next才是指向第一个节点
n = 10
num = 0
for _ in range(0,n):current.next = ListNode(int(input("请输入数字:")))current = current.nextx = int(input("请输入你想要移除的元素的数值:"))current = dummy_head
while current.next:if current.next.value==x:current.next = current.next.nextnum += 1else:current = current.nextcurrent = dummy_head
while current:print(current.value, end=" -> " if current.next else "")current = current.next

关于最后的输出,给大家做个小小的解释:

current.value就是值的是值,而,后面的则指的是一个三元运算 如果current.next还有值,那么输出“->”,如果current.next已经是None了,那么就输出“”

2、设计链表

题意:

在链表类中实现这些功能:

  • get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
  • addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
  • addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
  • addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val  的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
  • deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。
# 设计链表
class ListNode:def __init__(self,data=0,next=None):self.value = dataself.next = next
# 定义类
class MylinkList:def __init__(self):self.dummy_head = ListNode()#虚拟头节点self.size = 0# 定义相关的函数def get(self,index: int) -> int:# 首先看index是不是合法的if index<0 or index>=self.size:return -1else:current = self.dummy_head.next #指向有值的第一个节点for i in range(0, index):current = current.nextreturn current.value# 在头部增加一个值def addAtHead(self,value:int)->None:self.dummy_head.next = ListNode(value,self.dummy_head.next)self.size +=1# 在尾部增加一个值def addAtTail(self,value:int)->None:current = self.dummy_headwhile current.next:# 注意,这里必须是检查current.next 因为如果检查current的话,就会变成current是一个None,# 我们是不能修改None的值的current = current.nextcurrent.next = ListNode(value,None)self.size += 1# 在链表中的第index个节点之前添加值为value的节点def addAtIndex(self,index:int, value:int)->None:if index < 0 or index > self.size:returncurrent = self.dummy_headfor i in range(0,index):current = current.nextcurrent.next = ListNode(value,current.next)self.size +=1# 在列表中指定删除某个值def deleteAtIndex(self,index:int)->None:if index < 0 or index > self.size:returncurrent = self.dummy_headfor i in range(0,index):current = current.nextcurrent.next = current.next.nextself.size-=1obj = MylinkList()#创立一个新的链表?
obj.addAtHead(11)
obj.addAtTail(100)current = obj.dummy_head.next
while current.next:print(current.value)current = current.nextsub = obj.get(1)current = obj.dummy_head.next
while current.next:print(current.value)current = current.nextobj.addAtTail(1)
obj.addAtTail(23)current = obj.dummy_head.next
while current.next:print(current.value)current = current.nextobj.deleteAtIndex(2)current = obj.dummy_head.next
while current.next:print(current.value)current = current.next

http://www.dtcms.com/wzjs/489884.html

相关文章:

  • beego做网站西安网络科技有限公司
  • 网站优化怎么做关键词排名学生个人网页制作教程
  • 以后做网站发展前途南京seo
  • 营销策划公司有哪些公司杭州seo搜索引擎优化公司
  • 关于网站及新媒体平台建设的规划百度推广外推联系方式
  • 北京 网站备案利用搜索引擎营销成功的案例
  • 网站可以做的兼职怎么推广网站链接
  • 快速网站制作西安疫情最新通知
  • 做日本民宿的网站中国国家培训网靠谱吗
  • wordpress可以装在子目录下潜江seo
  • aspx网站使用什么做的百度知道网页版入口
  • 营商环境网站建设公司产品怎样网上推广
  • 图片叠加网站优化关键词快速排名
  • 网页设计精选网站百度推广后台登陆入口
  • 中国公路建设在哪个网站公示品牌公关
  • 深圳多语言网站建设seo根据什么具体优化
  • 做壁纸网站好seo网络推广怎么做
  • 深圳专业网站建设公司好吗公司网页制作流程
  • wordpress 布局插件seo网站查询工具
  • 做抽纸行业网站最近的电脑培训班在哪里
  • 企业网站seo数据百度推广费2800元每年都有吗
  • 网站视频提取软件app企点
  • 官方网站的重要性网页制作源代码
  • 你学做网站学了多久互联网推广引流是做什么的
  • 个人免费网站平台哪个好优化关键词排名seo
  • 杭州网站建设哪里好媒体代发布
  • 网站制作上首页网络广告营销方案策划内容
  • 天津重型网站建设方案公司阿里云域名注册
  • 网站建设(信奈辉煌电商)百度联盟
  • 门户网站做电子商务网站推广