在数据结构课程中,代码题通常考查对基本数据结构如链表、树、图以及算法如排序、查找的理解和应用。以下是一个关于链表的代码题示例:
题目:实现一个单链表,包括以下功能:
1. 创建链表节点
2. 插入节点(在链表头部、尾部或指定位置)
3. 删除节点(删除头部、尾部或指定位置的节点)
4. 查找节点(查找指定值的节点)
5. 打印链表
```python
class ListNode:
def __init__(self, value=0, next_node=None):
self.value = value
self.next = next_node
class LinkedList:
def __init__(self):
self.head = None
def insert_at_head(self, value):
new_node = ListNode(value)
new_node.next = self.head
self.head = new_node
def insert_at_tail(self, value):
new_node = ListNode(value)
if not self.head:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
def insert_at_position(self, position, value):
if position == 0:
self.insert_at_head(value)
return
new_node = ListNode(value)
current_node = self.head
for _ in range(position - 1):
if not current_node:
raise Exception("Position out of range")
current_node = current_node.next
new_node.next = current_node.next
current_node.next = new_node
def delete_at_head(self):
if not self.head:
return
self.head = self.head.next
def delete_at_tail(self):
if not self.head:
return
if not self.head.next:
self.head = None
return
last_node = self.head
while last_node.next.next:
last_node = last_node.next
last_node.next = None
def delete_at_position(self, position):
if position == 0:
self.delete_at_head()
return
current_node = self.head
for _ in range(position - 1):
if not current_node:
raise Exception("Position out of range")
current_node = current_node.next
if not current_node.next:
raise Exception("Position out of range")
current_node.next = current_node.next.next
def find(self, value):
current_node = self.head
while current_node:
if current_node.value == value:
return current_node
current_node = current_node.next
return None
def print_list(self):
current_node = self.head
while current_node:
print(current_node.value, end=" -> ")
current_node = current_node.next
print("None")
使用示例
ll = LinkedList()
ll.insert_at_head(1)
ll.insert_at_tail(2)
ll.insert_at_position(1, 3)
ll.print_list() 输出:1 -> 3 -> 2 -> None
ll.delete_at_position(2)
ll.print_list() 输出:1 -> 3 -> None
```
微信小程序:【考研刷题通】,包含政治刷题,英语刷题,数学等全部考研科目,助你高效备考,轻松应对考研挑战!立即下载,开启你的考研之旅!