设计一个单链表,实现单链表初始化、求数据元素个数操作、插入、删除、取数据元素、判非空操作。
时间: 2023-12-21 10:03:13 浏览: 79
好的,我可以帮您设计一个单链表,并实现以下操作:
1. 单链表初始化
2. 求数据元素个数操作
3. 插入
4. 删除
5. 取数据元素
6. 判非空操作
以下是实现代码:
```python
# 定义链表节点类
class ListNode:
def __init__(self, val=None):
self.val = val
self.next = None
# 定义链表类
class LinkedList:
def __init__(self):
# 初始化头结点
self.head = ListNode()
# 初始化链表长度
self.size = 0
# 求数据元素个数
def get_size(self):
return self.size
# 判非空操作
def is_empty(self):
return self.size == 0
# 插入操作
def insert(self, index, val):
if index < 0 or index > self.size:
raise Exception("索引越界")
# 新建节点
node = ListNode(val)
# 找到待插入节点的前驱节点
prev = self.head
for i in range(index):
prev = prev.next
# 插入节点
node.next = prev.next
prev.next = node
# 更新链表长度
self.size += 1
# 删除操作
def delete(self, index):
if index < 0 or index >= self.size:
raise Exception("索引越界")
# 找到待删除节点的前驱节点
prev = self.head
for i in range(index):
prev = prev.next
# 删除节点
node = prev.next
prev.next = node.next
node.next = None
# 更新链表长度
self.size -= 1
return node.val
# 取数据元素
def get(self, index):
if index < 0 or index >= self.size:
raise Exception("索引越界")
# 找到待取节点
cur = self.head.next
for i in range(index):
cur = cur.next
return cur.val
# 打印链表
def print_list(self):
cur = self.head.next
while cur:
print(cur.val, end=" ")
cur = cur.next
print()
```
这是一个简单的单链表实现,可以通过如下代码进行测试:
```python
# 测试单链表
if __name__ == '__main__':
# 初始化单链表
l = LinkedList()
# 插入元素
l.insert(0, 1)
l.insert(1, 2)
l.insert(2, 3)
# 打印单链表
l.print_list() # 1 2 3
# 删除元素
l.delete(1)
# 打印单链表
l.print_list() # 1 3
# 取元素
print(l.get(1)) # 3
# 获取元素个数
print(l.get_size()) # 2
# 判空操作
print(l.is_empty()) # False
```
输出结果为:
```
1 2 3
1 3
3
2
False
```
希望这可以帮到你!
阅读全文