1. 建立单链表,并在单链表上实现插入、删除和查找操作
时间: 2024-05-06 07:16:55 浏览: 90
好的,我来给您讲解单链表的实现。
单链表是一种非常常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。单链表的头节点不包含数据元素,也没有前驱节点,只有后继节点。
下面我们来实现一个单链表,并在单链表上实现插入、删除和查找操作。
首先,定义一个节点类:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
```
每个节点包含一个 val 属性和一个 next 属性,分别表示节点的值和指向下一个节点的指针。
接下来,定义一个单链表类:
```python
class LinkedList:
def __init__(self):
self.head = ListNode()
```
单链表的头节点不包含数据元素,也没有前驱节点,只有后继节点。所以我们在初始化单链表时,创建一个空的头节点。
接下来,我们来实现插入操作。插入操作分为两种情况:
1. 在链表的头部插入一个节点
2. 在链表的中间或尾部插入一个节点
在链表的头部插入一个节点,可以通过以下代码实现:
```python
def insertAtHead(self, val):
node = ListNode(val)
node.next = self.head.next
self.head.next = node
```
首先,创建一个新的节点,并将它的 next 指针指向当前头节点的后继节点。然后将头节点的 next 指针指向新的节点。
在链表的中间或尾部插入一个节点,可以通过以下代码实现:
```python
def insertAtTail(self, val):
p = self.head
while p.next:
p = p.next
node = ListNode(val)
p.next = node
```
首先,遍历链表找到最后一个节点。然后,创建一个新的节点,并将最后一个节点的 next 指针指向新的节点。
接下来,我们来实现删除操作。删除操作也分为两种情况:
1. 删除链表的头节点
2. 删除链表的中间或尾部节点
删除链表的头节点,可以通过以下代码实现:
```python
def deleteAtHead(self):
if self.head.next:
self.head.next = self.head.next.next
```
首先,判断链表是否为空。如果链表不为空,将头节点的 next 指针指向当前头节点的后继节点的后继节点。
删除链表的中间或尾部节点,可以通过以下代码实现:
```python
def deleteAtTail(self):
p = self.head
while p.next and p.next.next:
p = p.next
if p.next:
p.next = None
```
首先,遍历链表找到倒数第二个节点。然后,将倒数第二个节点的 next 指针指向 None。
最后,我们来实现查找操作。查找操作可以通过以下代码实现:
```python
def search(self, val):
p = self.head.next
while p:
if p.val == val:
return True
p = p.next
return False
```
首先,从头节点的后继节点开始遍历链表。如果找到了值为 val 的节点,则返回 True。如果遍历完整个链表都没有找到值为 val 的节点,则返回 False。
好了,以上就是单链表的实现和插入、删除、查找操作的实现。
阅读全文