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

如何在链表中生成用户易记的唯一ID?

当然可以在getInput()里生成唯一ID!

这是非常合理的需求,而且实现起来很直接,下面是具体的实现思路和代码修改建议:

1. 给节点类添加ID相关成员

首先,你需要在node类里新增两个关键成员:一个存储节点ID的变量,一个用于生成唯一ID的静态计数器(所有节点共享这个计数器,确保ID不重复)。同时为了后续删除节点时能读取ID,最好加一个公共的getter方法:

class node {
private:
    std::string name;
    int age;
    float height;
    int id; // 新增:存储当前节点的唯一ID
    static int nextId; // 新增:静态计数器,记录下一个要生成的ID
public:
    // ... 你的其他成员变量和方法 ...
    int getId() const { return id; } // 新增:获取ID的公共方法,供删除时比对使用
    // ...
};

2. 初始化静态计数器

静态成员变量必须在类外部初始化,在你的cpp文件(类定义代码块之外)添加:

int node::nextId = 1; // 从1开始递增,也可以根据需求从0开始

3. 在getInput()里自动生成ID

修改getInput()函数,把原来让用户输入ID的逻辑替换成自动赋值,还可以把生成的ID打印给用户,方便后续操作:

void getInput() {
    temp = new node;
    // 自动生成唯一ID:把计数器值赋值给当前节点,然后计数器自增
    temp->id = nextId++;
    cout << "Generated ID: " << temp->id << endl; // 告知用户当前节点的ID
    cout << "Name: ";
    cin >> temp->name;
    cout << "Age: ";
    cin >> temp->age;
    cout << "Height: ";
    cin >> temp->height;
    cout<<"\n";
    temp->next = NULL;
    if (start_ptr == NULL)
        start_ptr = temp;
    else {
        temp2 = start_ptr;
        while (temp2->next != NULL)
            temp2 = temp2->next;
        temp2->next = temp;
    }
}

4. 实现通过ID删除节点的函数

最后,你可以新增一个deleteById函数,逻辑和你现有的deletebyAge类似,只是把比对条件换成ID即可:

void deleteById(int targetId) {
    current = start_ptr;
    prev = NULL;
    // 遍历链表找对应ID的节点
    while (current != NULL && current->getId() != targetId) {
        prev = current;
        current = current->next;
    }
    if (current == NULL) {
        cout << "Node with ID " << targetId << " not found!" << endl;
        return;
    }
    // 调整指针完成删除
    if (prev == NULL) {
        // 删除的是头节点
        start_ptr = current->next;
    } else {
        prev->next = current->next;
    }
    delete current;
    cout << "Node with ID " << targetId << " deleted successfully!" << endl;
}

额外小提示

  • 如果担心节点数量过多导致int类型的ID溢出,可以换成unsigned int或者long long类型;
  • 你的代码里struct list看起来没有实际被用到,可以考虑清理掉,避免代码混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:01:35