top1编程
← 返回题目
题解

链表删除结点

1 条题解

  • 0
    @ 2026-8-7 14:55:34

    PP4861 链表删除结点(入门)

    解题思路

    第一步,理解题意。 有一串数字 1、2、3、4、5,按顺序连成一条链表。题目给一个数字 n(1<n≤5),要求把装着 n 的那个结点从链表中删掉,然后从链表头开始输出剩下的数字。例如 n=3 时,3 被删掉,剩下 1 2 4 5。

    第二步,找简单的做法。 链表本来就固定是 1 到 5,所以不需要真的建链表。只要从 1 数到 5,跳过 n 不输出,其余数字照常输出即可。少输出一个数字,就相当于"把那个结点删掉了"。

    第三步,注意细节。 n 只能是 2、3、4、5,所以一定在链表里,不需要担心"删不到"的情况;输出时数字之间用空格隔开,最后换行。末尾多一个空格也不影响判题。

    第四步,例子验证。 输入 2,就跳过 2,输出 1 3 4 5;输入 5,就跳过 5,输出 1 2 3 4。如果输入 4,得到 1 2 3 5,删掉 4 后剩下的正是这些数。

    参考代码

    // 链表删除结点:从 1~5 的链表中删掉数字 n,再输出剩下的
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        for (int i = 1; i <= 5; ++i) {
            if (i != n) cout << i << " ";  // 跳过要删除的数字
        }
        cout << endl;
        return 0;
    }
    

    复杂度分析

    只用了一层 for 循环,固定循环 5 次,每次做一次判断和一次输出,所以时间复杂度和空间复杂度都是 O(1)。链表长度固定,不会随着数据变大,运行速度极快。

    • 1