python单链表的实例
时间: 2023-08-31 13:33:56 浏览: 111
### 回答1:
下面是一个 Python 实现的单链表的示例:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
current_node = self.head
while current_node.next:
current_node = current_node.next
current_node.next = new_node
def print_list(self):
current_node = self.head
while current_node:
print(current_node.data)
current_node = current_node.next
```
这个示例定义了一个 `Node` 类来表示链表中的节点,每个节点包含了一个 `data` 属性和一个指向下一个节点的 `next` 属性。`LinkedList` 类则定义了一个 `head` 属性来表示链表的头节点。
`append()` 方法用于向链表中添加新的节点。如果链表为空,则将新节点作为头节点。否则,遍历链表找到最后一个节点,然后将新节点添加到其 `next` 属性中。
`print_list()` 方法用于打印链表中的所有节点。遍历链表中的每个节点,打印其 `data` 属性。
### 回答2:
Python单链表是一种常用的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
下面是一个Python单链表的实例:
```python
class Node:
def __init__(self, data=None):
self.data = data # 节点数据
self.next = None # 下一个节点的指针
class LinkedList:
def __init__(self):
self.head = None # 链表头指针
def is_empty(self):
return self.head is None
def append(self, data):
new_node = Node(data)
if self.is_empty():
self.head = new_node
else:
current_node = self.head
while current_node.next:
current_node = current_node.next
current_node.next = new_node
def insert(self, data, index):
if index < 0 or index > self.get_length():
raise Exception('插入位置超出链表范围!')
new_node = Node(data)
if index == 0:
new_node.next = self.head
self.head = new_node
else:
count = 0
current_node = self.head
while count < index - 1:
current_node = current_node.next
count += 1
new_node.next = current_node.next
current_node.next = new_node
def delete(self, index):
if index < 0 or index >= self.get_length():
raise Exception('删除位置超出链表范围!')
if index == 0:
self.head = self.head.next
else:
count = 0
current_node = self.head
while count < index - 1:
current_node = current_node.next
count += 1
current_node.next = current_node.next.next
def search(self, data):
current_node = self.head
while current_node:
if current_node.data == data:
return True
current_node = current_node.next
return False
def get_length(self):
count = 0
current_node = self.head
while current_node:
count += 1
current_node = current_node.next
return count
```
在这个实例中,我们定义了一个节点类和一个链表类,通过节点类的实例来创建节点,并使用链表类来操作这些节点。链表类的方法包括添加节点、插入节点、删除节点、查找节点和获取链表长度。
使用这个单链表的实例,我们可以方便地创建、操作和管理一个单链表数据结构。
### 回答3:
Python中的单链表是一种常见的数据结构,用来存储一系列的数据,并且可以进行灵活的操作。下面是一个使用Python实现的单链表示例:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
else:
current_node = self.head
while current_node.next:
current_node = current_node.next
current_node.next = new_node
def insert(self, data, position):
new_node = Node(data)
if position == 0:
new_node.next = self.head
self.head = new_node
else:
current_node = self.head
for _ in range(position-1):
if current_node.next:
current_node = current_node.next
else:
break
new_node.next = current_node.next
current_node.next = new_node
def remove(self, data):
if not self.head:
return
if self.head.data == data:
self.head = self.head.next
else:
current_node = self.head
while current_node.next:
if current_node.next.data == data:
current_node.next = current_node.next.next
break
current_node = current_node.next
def search(self, data):
current_node = self.head
while current_node:
if current_node.data == data:
return True
current_node = current_node.next
return False
def display(self):
current_node = self.head
while current_node:
print(current_node.data, end=' ')
current_node = current_node.next
print()
```
上述代码通过定义了Node类和LinkedList类来实现单链表。其中,Node类表示链表中的节点,包含数据和指向下一个节点的指针。LinkedList类包含了一些常用的操作,比如:追加数据到链表末尾、在指定位置插入数据、删除指定数据、查找数据以及显示整个链表。
使用该单链表实例时,我们首先需要创建一个LinkedList对象,然后可以使用append()方法追加数据到链表末尾,使用insert()方法在指定位置插入数据,使用remove()方法删除指定数据,使用search()方法查找数据,使用display()方法显示整个链表的内容。
举个例子,我们可以这样使用该单链表实例:
```python
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.insert(0, 0)
linked_list.remove(2)
linked_list.display()
```
这段代码会输出链表的内容:0 1 3。
阅读全文