数据结构-链表
1. 链表的基本概念:
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向列表中下一个节点的引用(或指针)。
2. 单向链表:
单向链表的每个节点只有一个指向下一个节点的链接。这种结构使得遍历只能单向进行,从头节点开始到尾节点结束。
class Node:
def __init__(self, data):
self.data = data
self.next = None
- 双向链表:
双向链表的每个节点都有两个链接,一个指向前一个节点,一个指向下一个节点。这种结构允许在两个方向上遍历链表。
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
4. 循环链表:
循环链表可以是单向或双向的,其特点在于链表的尾部不是指向null,而是指向另一个节点,形成一个环。
5. 链表的特点:
链表中的元素不必在内存中连续存储。链表为插入和删除操作提供了高效的性能,但访问元素(尤其是在单向链表中)可能不如数组快。
链表的基本操作
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 self.head is None:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
def prepend(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def delete(self, data):
current_node = self.head
if current_node and current_node.data == data:
self.head = current_node.next
current_node = None
return
prev_node = None
while current_node and current_node.data != data:
prev_node = current_node
current_node = current_node.next
if current_node is None:
return
prev_node.next = current_node.next
current_node = None
def print_list(self):
current_node = self.head
while current_node:
print(current_node.data, end=" ")
current_node = current_node.next
print()
# 示例用法
if __name__ == "__main__":
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
ll.prepend(4)
ll.delete(3)
ll.print_list()
标签:node,current,self,链表,__,数据结构,data
From: https://www.cnblogs.com/zx-demo/p/18132855