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

镇江个人网站建设浏览器广告投放

镇江个人网站建设,浏览器广告投放,网站开发 改进,安康免费做网站公司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/167882.html

相关文章:

  • 潜江资讯网58同城上海优化价格
  • 自己建设网站怎么做营销效果分析怎么写
  • 三站一体网站制作新人做外贸怎么找国外客户
  • 哪个网站有做形象墙服务外包平台
  • 网站开发团队人员谷歌浏览器安卓版下载
  • wordpress中文站深圳市网络品牌推广
  • 如何在网站页面做标注淮安网站seo
  • 如何做优秀的视频网站设计百度一下你就知道了官网
  • 软件管理杭州百家号优化
  • 在线生成网页工具网站按天扣费优化推广
  • 辽宁省建设执业信息网官网windows优化大师兑换码
  • 网站上做百度广告赚钱么seo技术教学视频
  • 自建网站如何在百度上查到网站建设方案推广
  • 注册安全工程师条件百度seo多少钱一个月
  • 网站怎样绑定域名百度官网app
  • 网站app制作平台如何做网站优化seo
  • wordpress只有文字上海网络排名优化
  • 深圳市城乡和建设局网站百度推广二级代理商
  • 网站优化的方法盘古百晋广告营销是干嘛
  • 西安的网站建设公司seo能干一辈子吗
  • 163网站是jsp做的吗360网址大全
  • 网站栏目做树形结构图seo如何优化网站
  • 直播系统开发seo百科
  • 怎么做相册的网站搜索引擎优化师
  • 网络策划公司全网天下seo关键词优化工具
  • wap网站开发百度云网站入口
  • 那些网站反爬做的好想学互联网从哪里入手
  • 网站突然搜不到了东莞seo外包公司哪家好
  • 网站宣传与推广的指导思想做推广网络
  • 有关外贸的网站有哪些内容网店运营公司