鱼C论坛

 找回密码
 立即注册
查看: 2604|回复: 7

急急急,大神快来救助一下,如何实例化链表结构 输入两个链表,找出它们的第一个

[复制链接]
发表于 2017-10-11 10:11:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请大神看一看,怎么实例化这个ListNode类,让这个代码运行。怎么让这个Phead1和Phead2拥有这个ListNode的结构,不知道怎么继续下去

题目:python 输入两个链表,找出它们的第一个公共结点

  1. class ListNode:
  2.     def __int__(self):
  3.         self.val = val
  4.         self.next = None
  5. def FindFirstCommonNode(Phead1, Phead2):
  6.     l1 = []
  7.     l2 = []
  8.     node1 = Phead1
  9.     node2 = Phead2
  10.     #Node = ListNode()#实例化一个类
  11.     while node1:
  12.         l1.append(Phead1.val)
  13.         node1 = node1.next
  14.     while node2:
  15.         if node2.val in l1:
  16.             return node2
  17.         else:
  18.             node2 = node2.next
  19. Phead1 = [1,2,3,45]
  20. Phead2 = [4,5,6,8,9,3,45]
  21. print(FindFirstCommonNode(Phead1,Phead2))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-11 13:01:03 | 显示全部楼层
直接遍历一组列表不就好了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-11 13:05:03 | 显示全部楼层
我认为楼主的思路是这样的:val是列表的值,next是指向下一个val;但None代表这一个空对象,故表示不正确
用while循环来照出列表的每一个值,然后对比两个列表结点找出相同的结点
出现的问题:
应该把__int__改为__init__,建立ListNode的属性,应该加链表的参数
我按自己的思路帮你做了一下,修改了好多,希望能采纳,还有什么问题可以询问呐.
  1. class ListNode:
  2.     def __init__(self,node_list):
  3.         self.list = node_list
  4.     def getList(self):
  5.         return self.list
  6.         
  7.         
  8. def FindFirstCommonNode(Phead1, Phead2):
  9.     node1 = ListNode(Phead1)
  10.     node2 = ListNode(Phead2)
  11.     #Node = ListNode()#实例化一个类
  12.     for each1 in node1.list:
  13.         for each2 in node2.list:
  14.             if each1 == each2:
  15.                 return each1  #返回第一个公共结点
  16.                 break   #跳出第二个循环
  17.         if each1 == each2:break     #跳出第一个循环
  18. Phead1 = [1,2,3,45]
  19. Phead2 = [4,5,6,8,9,3,45]
  20. print(FindFirstCommonNode(Phead1,Phead2))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2017-10-11 13:43:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-11 16:21:48 | 显示全部楼层
  1. class ListNode:
  2.     def __init__(self):
  3.         self.val = None
  4.         self.next = None
  5.         
  6. class Lst:
  7.     def __init__(self):
  8.         self.head=None
  9.         self.tail=None
  10.         
  11.     def addnode(self,val):
  12.         if self.head is None:
  13.             self.head=ListNode()
  14.             self.head.val=val
  15.             self.tail=self.head
  16.         elif self.tail.next is None:
  17.             self.tail.next=ListNode()
  18.             self.tail.next.val=val
  19.             self.tail=self.tail.next
  20.             
  21. Phead1 = [1,2,3,45]
  22. lst=Lst()
  23. for n in Phead1:
  24.     lst.addnode(n)
  25.         
  26. print(lst.head.val,
  27.       lst.tail.val,
  28.       lst.head.next.val)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 09:30:34 | 显示全部楼层
ba21 发表于 2017-10-11 13:01
直接遍历一组列表不就好了?

题目要求是链表结构,我们应该先具有链表的结构,虽然可以用列表的结构来表示,但是感觉和题目有一点差异
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 09:37:13 | 显示全部楼层
宫保鸡丁丁 发表于 2017-10-11 13:05
我认为楼主的思路是这样的:val是列表的值,next是指向下一个val;但None代表这一个空对象,故表示不正确
用wh ...

你这个我看懂了,也明白你的意思了,
然后我觉得这里,self.next = None,表示链表的最后一个元素,没有后续元素就是为空,在那个__init__()函数中,定一个一个这样的结构,一个是值域,存放val,一个是指针域,

但是不明白为什么这么写,在牛客网的oj平台可以通过,你可以帮我看一下吗?地址是,https://www.nowcoder.com/profile/573618/codeBookDetail?submissionId=3520439
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 09:47:56 | 显示全部楼层

我跑了一下这个代码,思考了一下,这个是生成了一个链表结构,可以返回,头结点,下一个值,尾节点,你能指明一下,我的思想的错误吗,我对自己的那个代码还是挺迷茫的,你这个我明白了功能
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-24 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表