头插法和尾插法有啥区别
时间: 2024-01-05 20:18:56 浏览: 1456
头插法和尾插法是链表中两种常见的插入方式,它们的区别在于插入的位置不同。
头插法是将新节点插入到链表的头部,也就是作为新的头节点,而原来的头节点成为了第二个节点。这种方式可以快速在链表头部插入新节点,但是会改变链表的结构。
尾插法是将新节点插入到链表的尾部,也就是作为新的尾节点,而原来的尾节点的next指针指向了新节点。这种方式可以保持链表的结构不变,但是在插入新节点时需要遍历整个链表,效率较低。
下面是头插法和尾插法的Python代码示例:
1.头插法
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert_at_beginning(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def print_list(self):
temp = self.head
while temp:
print(temp.data, end=" ")
temp = temp.next
# 创建链表
llist = LinkedList()
# 插入节点
llist.insert_at_beginning(3)
llist.insert_at_beginning(2)
llist.insert_at_beginning(1)
# 打印链表
llist.print_list() # 输出:1 2 3
```
2.尾插法
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert_at_end(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
return
last = self.head
while last.next:
last = last.next
last.next = new_node
def print_list(self):
temp = self.head
while temp:
print(temp.data, end=" ")
temp = temp.next
# 创建链表
llist = LinkedList()
# 插入节点
llist.insert_at_end(1)
llist.insert_at_end(2)
llist.insert_at_end(3)
# 打印链表
llist.print_list() # 输出:1 2 3
```
阅读全文