You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

链表插入函数无法正常工作,请求技术协助排查问题

问题分析与修复

你的代码核心问题出在空闲指针(FreePointer)的更新逻辑,导致每次插入都在重复覆盖同一个节点,具体原因如下:

  1. 初始FreePointer为0,第一次插入时,你把新节点的NextPointer直接设为-1,紧接着又把FreePointer赋值为这个-1。
  2. 后续插入时,-1 < 10的判断成立,但LinkList[-1]是数组的最后一个元素,所以每次输入的数据都会覆盖最后一个节点的值,前面的节点除了第一个,根本没被用到。
  3. 另外你漏写了Node类的定义,原代码运行时会直接报错。

修复后的完整代码

class Node:
    def __init__(self):
        self.data = ""
        self.NextPointer = -1

def InsertLinkList(LinkList, StartPointer, FreePointer):
    if FreePointer != -1:  # 空闲链表为空才表示满了
        data = int(input("Enter the data: "))
        newNode = FreePointer
        # 先保存下一个空闲节点的索引,更新FreePointer
        FreePointer = LinkList[FreePointer].NextPointer
        
        LinkList[newNode].data = data
        LinkList[newNode].NextPointer = -1

        if StartPointer == -1:
            StartPointer = newNode
        else:
            currentPointer = StartPointer
            while currentPointer != -1:
                lastNode = currentPointer
                currentPointer = LinkList[currentPointer].NextPointer
            LinkList[lastNode].NextPointer = newNode
    else:
        print("List is full")

    return LinkList, StartPointer, FreePointer

def PrintAll(LinkList):
    for i in range(10):
         print(LinkList[i].data)

# 初始化链表:构建空闲链表,每个节点的NextPointer指向下一个索引
LinkList = [Node() for i in range(10)]
for i in range(9):
    LinkList[i].NextPointer = i + 1
LinkList[9].NextPointer = -1  # 最后一个空闲节点的NextPointer为-1

StartPointer = -1
FreePointer = 0

for i in range(10):
    LinkList, StartPointer, FreePointer = InsertLinkList(LinkList, StartPointer, FreePointer)

PrintAll(LinkList)

关键修改点

  • 补充了Node类的完整定义,这是原代码缺失的部分。
  • 初始化时构建了空闲链表:把所有节点通过NextPointer串联起来,0→1→2→…→9→-1,这样FreePointer可以依次指向可用的空闲节点。
  • 插入时先更新FreePointer:取出当前空闲节点后,把FreePointer设为该节点原来的NextPointer(即下一个空闲节点的索引),而不是设为-1。
  • 修改了链表满的判断条件:当FreePointer为-1时,说明没有空闲节点了,才提示链表已满。

运行修复后的代码,输入10组数据后,所有节点都会正确显示对应的数据,不会再出现中间为空的情况。

内容的提问来源于stack exchange,提问作者user3257213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:17:18