非常不好意思的又来向大家问小白问题了,关于 python3

2016-03-06 22:27:54 +08:00
 Cassandra
在不创建新的 dictionary 或者 list 或者 linked list 情况下,怎么清空 linked list 里面的所有东西?
简单来说就是通过把 pointer 移来移去,删除 linked list 里面的东西。
删除过后 linked list 应该 print 出来 None

如果允许创建新的 list ,这我也会。
可不被允许我就没辙了。。。。%>_<%
求大家帮帮忙 T^T
4684 次点击
所在节点    Python
44 条回复
Cassandra
2016-03-06 22:29:34 +08:00
啊我忘说了! recursion 和 class 都没学。老师应该也不会允许
evolsnow
2016-03-06 22:51:43 +08:00
del l[:]?
Cassandra
2016-03-06 22:54:16 +08:00
@evolsnow 并不能行
lxy42
2016-03-06 23:13:10 +08:00
l[:] = []
Cassandra
2016-03-06 23:15:42 +08:00
@lxy42 这个也不行哦
Strikeactor
2016-03-06 23:54:19 +08:00
原谅我完全没看明白楼主在问什么
magicdawn
2016-03-06 23:57:23 +08:00
@lxy42

`l[:] = []` 这个创建了新的 list
Cassandra
2016-03-06 23:59:11 +08:00
@Strikeactor 额是哪里没有懂呢
yelite
2016-03-07 00:01:53 +08:00
你的 linked list 是用什么表示的?
我记得 list 是有个 clear 方法的
Cassandra
2016-03-07 00:06:34 +08:00
@yelite 额类似 dictionary 的写法 node = {} node['data'] = value node['next'] = None 这种?不知道你是不是想要问这个
yelite
2016-03-07 00:11:59 +08:00
@Cassandra 应该还要有一个变量指向 last node 或者 first node ?把它变成 None 就行了
Strikeactor
2016-03-07 00:12:39 +08:00
@Cassandra 全部,我猜你想问的是数据结构的问题,然而把锅丢到了 python 头上
Cassandra
2016-03-07 00:19:04 +08:00
@Strikeactor 并不能完全算是数据结构问题吧。我就是想问问如何删除 linked list 里的所有东西。然后我就是用 python 在写。嗯。

@yelite 好我试试
Cassandra
2016-03-07 00:21:26 +08:00
@yelite 有一个变量指向 first node 。直接把它变成 none 好像不行哦。不过老师的确是要求通过更改这个变量指向的位置来删除
shutongxinq
2016-03-07 00:26:26 +08:00
@Cassandra 假设 curNode 指向 head ,你就
while curNode:
curNode = curNode.next
就可以了
yelite
2016-03-07 00:28:07 +08:00
@Cassandra 那也可以用循环, first_node = first_node['next'] 直到变成 None 。不过和直接写没有任何区别…
seki
2016-03-07 00:39:37 +08:00
到底是用什么构造出来的 linked list ?
删除又是什么概念,在 python 没有引用就会被回收,直接改成 None ,就可以看作被删除了

这些看上去是用 c 来写数据结构的问题,用 python 写就感觉怪怪的
cosven
2016-03-07 00:41:11 +08:00
怎么看都像 c 家族 的问题, 嘿嘿 -- - - - - 个人感觉

感觉 LZ 的问题是怎样释放(单)链表

1. 应该不能从 head (第一个节点) 指针开始释放
2. 也不方便从 tail (最后一个指针) 开始释放。(如果是单链表的话)

个人感觉:从第二个节点开始释放

```c/c+_+
tmp = head->next->next
free(head->next)
head->next = tmp
```
多年没写过 c 的感觉应该是这样....
不对勿喷....
Cassandra
2016-03-07 00:47:00 +08:00
@seki
@cosven
老师教的使用 dictionary 构造 linked list 。我不是很了解 c 所以也不知道为什么你们这么说。可是老师这么教,总要这么写吧,学生嘛还是要分数的。
不过很好奇在 python 下你们怎么构造 linked list 呢
cosven
2016-03-07 00:49:56 +08:00
# -*- coding: utf-8 -*-


class LinkedList(object):
def __init__(self, val=0):
self.val = val
self.next_ = None


def main():
l1 = LinkedList(1)
l2 = LinkedList(2)
l3 = LinkedList(3)

l1.next_ = l2
l2.next_ = l3

print(l1.val)
while(l1.next_):
if not l1.next_.next_:
del l1.next_
break
tmp = l1.next_.next_
del l1.next_
l1.next_ = tmp

del l1
# print(l1.val)


if __name__ == '__main__':
main()

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261545

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX