一个不带头结点的单链表类的实
时间: 2024-04-30 16:17:45 浏览: 14
现可以设计如下:
```python
class LinkedList:
class Node:
def __init__(self, val, next=None):
self.val = val
self.next = next
def __init__(self):
self.head = None
self.tail = None
self.size = 0
def __len__(self):
return self.size
def is_empty(self):
return self.size == 0
def add_last(self, val):
new_node = self.Node(val)
if self.is_empty():
self.head = new_node
else:
self.tail.next = new_node
self.tail = new_node
self.size += 1
def add_first(self, val):
new_node = self.Node(val)
if self.is_empty():
self.tail = new_node
else:
new_node.next = self.head
self.head = new_node
self.size += 1
def remove_first(self):
if self.is_empty():
raise Exception("List is empty")
val = self.head.val
self.head = self.head.next
self.size -= 1
if self.is_empty():
self.tail = None
return val
def __iter__(self):
curr = self.head
while curr:
yield curr.val
curr = curr.next
```
这个链表类包括一个嵌套类 Node,代表链表中的一个结点。链表类中包含一个头指针 head 和尾指针 tail,以及链表的长度 size。它还包括常见的添加、删除、遍历等操作,可以方便地用于解决各种问题。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)