如何用Python逐行读取txt文件数字并构建多分支链表
Python多链表结构实现
节点类定义
定义双指针节点结构,每个节点同时持有主链后继指针和分支链表后继指针:
class Node: def __init__(self, val): self.val = val self.next_main = None # 主链下一个节点指针 self.next_branch = None # 分支链表下一个节点指针
多链表构建流程
- 第一步:读取TXT文件,逐行拆分内容为整数列表,所有行的第一个元素按顺序组成主链的节点值序列
- 第二步:遍历主链值序列创建主节点,依次连接主链的
next_main指针 - 第三步:逐行处理分支元素,从对应主节点开始,依次创建分支节点,连接
next_branch指针
完整实现代码
class Node: def __init__(self, val): self.val = val self.next_main = None self.next_branch = None def build_multi_linked_list(file_path): # 读取文件内容 lines = [] with open(file_path, 'r', encoding='utf-8') as f: for line in f: line = line.strip() if not line: continue num_list = list(map(int, line.split())) lines.append(num_list) if not lines: return None # 先构建主链 main_head = Node(lines[0][0]) current_main = main_head main_nodes = [main_head] # 存储所有主节点方便后续处理分支 for i in range(1, len(lines)): new_node = Node(lines[i][0]) current_main.next_main = new_node current_main = new_node main_nodes.append(new_node) # 构建每个主节点对应的分支链表 for idx, num_list in enumerate(lines): current_branch = main_nodes[idx] # 分支从第2个元素开始构建 for val in num_list[1:]: new_branch_node = Node(val) current_branch.next_branch = new_branch_node current_branch = new_branch_node return main_head # 测试打印函数 def print_multi_linked_list(head): # 打印主链 main_vals = [] current = head while current: main_vals.append(str(current.val)) current = current.next_main print("主链结构:", "->".join(main_vals)) # 打印每个主节点的分支 current_main = head while current_main: branch_vals = [] current_branch = current_main while current_branch: branch_vals.append(str(current_branch.val)) current_branch = current_branch.next_branch print(f"主节点{current_main.val}的分支结构:", "->".join(branch_vals)) current_main = current_main.next_main # 调用示例 if __name__ == "__main__": # 假设输入文件名为input.txt,和代码同目录 head = build_multi_linked_list("input.txt") print_multi_linked_list(head)
运行结果说明
将示例输入保存为input.txt后运行代码,输出结果如下:
主链结构: 10->13->14->12 主节点10的分支结构: 10->15->58 主节点13的分支结构: 13->18->25->20 主节点14的分支结构: 14 主节点12的分支结构: 12->55
完全符合需求预期。
内容的提问来源于stack exchange,提问作者moein2k
相关产品推荐
相关产品推荐

