单链表的初始化建立非空链表,插入删除
时间: 2024-09-25 11:11:52 浏览: 36
数据分析,链表相关复习
单链表是一种基础的数据结构,它由一系列节点组成,每个节点包含两个部分:数据域和指针域。节点之间通过指针相连形成链式结构。以下是创建非空链表的基本步骤:
1. **初始化建立**:
- 首先,创建一个头结点(head),它的值通常设置为`null`,表示链表为空。
- 然后,你可以创建第一个实际存储数据的节点,将其`next`字段指向头结点,头结点的`next`设为这个新节点。
```python
class ListNode:
def __init__(self, data):
self.data = data
self.next = None
# 初始化一个只有一个元素的链表
node1 = ListNode(1)
head = node1
```
2. **插入操作**:
- 如果需要在链表的开头插入,只需将新节点的`next`指向当前头结点,然后更新头结点为新节点。
- 如果要在中间或末尾插入,可以遍历到目标位置,再插入新节点。
```python
def insert_at_head(new_data):
new_node = ListNode(new_data)
new_node.next = head
head = new_node
def insert_at_position(head, pos, data):
if pos == 0:
return insert_at_head(data)
else:
current = head
for _ in range(pos - 1):
if current is not None:
current = current.next
if current is not None:
new_node = ListNode(data)
new_node.next = current.next
current.next = new_node
```
3. **删除操作**:
- 删除首节点相对简单,直接更新头结点的`next`。
- 删除其他位置的节点则需要找到前一个节点,然后更改其`next`指向下一个节点。
```python
def delete_first():
global head
if head is not None:
head = head.next
def delete_by_value(head, value):
if head is not None and head.data == value:
head = head.next
else:
current = head
while current is not None and current.data != value:
prev = current
current = current.next
if current is not None:
prev.next = current.next
```
阅读全文