SDUT链表节点
时间: 2025-05-10 12:36:32 浏览: 24
### 单链表节点实现及其操作
在山东理工大学 (SDUT) 的数据结构课程中,关于单链表的操作通常涉及基本的节点定义以及常见的链表处理方法。以下是基于题目描述中的需求所设计的一个完整的解决方案。
#### 节点类定义
为了构建单链表,首先需要定义一个表示节点的类 `Node`。每个节点存储两个部分:一个是数据域 (`data`),另一个是指针域 (`next`),用于指向下一个节点。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
```
上述代码片段展示了如何创建一个简单的链表节点[^1]。
#### 构建单链表函数
通过读取输入的数据来动态构建单链表:
```python
def create_linked_list(n, values):
head = Node()
current = head
for i in range(n):
new_node = Node(values[i])
current.next = new_node
current = new_node
return head.next
```
此函数接收参数 `n` 和列表 `values` 来初始化并返回一个由这些值组成的单链表头指针[^2]。
#### 拆分链表逻辑
按照题目要求,需将原始链表拆分为两个子链表——偶数链表和奇数链表。可以遍历整个链表一次完成这一目标。
```python
def split_even_odd(head):
even_head = even_tail = Node() # 偶数链表头部和尾部辅助结点
odd_head = odd_tail = Node() # 奇数链表头部和尾部辅助结点
while head is not None:
if head.data % 2 == 0: # 判断当前节点数值是否为偶数
temp = Node(head.data)
even_tail.next = temp
even_tail = temp
else: # 否则加入到奇数链表
temp = Node(head.data)
odd_tail.next = temp
odd_tail = temp
head = head.next # 移动至下一节点继续判断
return even_head.next, odd_head.next
```
以上实现了对给定链表按条件分类的功能。
#### 主程序流程控制
最后编写主函数负责整体运行过程管理,包括获取用户输入、调用相应功能模块以及打印最终结果。
```python
if __name__ == "__main__":
n = int(input())
numbers = list(map(int, input().split()))
linked_list = create_linked_list(n, numbers)
even_list, odd_list = split_even_odd(linked_list)
count_even = sum(1 for _ in iterate(even_list))
count_odd = sum(1 for _ in iterate(odd_list))
print(f"{count_even} {count_odd}")
output_linked_list(even_list)
output_linked_list(odd_list)
```
其中 `iterate()` 函数用来迭代访问某个特定类型的链表实例对象,并逐一计数或者展示其内部元素内容;而 `output_linked_list()` 方法则是专门针对输出指定格式化后的完整链条信息。
---
阅读全文
相关推荐













