首页 > 解决方案 > 如何从链表C++的第k个元素返回信息

问题描述

假设我有一个由 {12,25,46,27,57} 组成的链接列表,我选择 k 为 4。我希望有一种方法可以遍历列表并只打印 27 作为我的输出。

我还想知道您将如何以相同的方式删除变量。因此,如果我从列表中选择变量 3,我希望链接列表打印为 {12,25,27,57}。

标签: c++linked-list

解决方案


对于您问题的第一部分,请执行以下操作:

Node * n=head;
for(int i=1; i<=k;i++){
    if(i==k){
        return n;
    }
    n=n->next;
}

对于第二部分,实现这个:

Node * n=head;
Node * rightPatch=head;
Node * leftPatch =head;
for(int i=1; i<=k;i++){
    if(i->next=nullptr){
        rightPatch=nullptr;
        tail=leftPatch;
    }
    else{
        rightPatch=n->next;
    }
    if(i==k && i ==1){
        delete n;
        head=rightPatch;
        return;     
    }
    else if(i==k){
        delete n;
        leftPatch->next=rightPatch;
        return;
    }
    leftPatch=n;
    n=n->next;
}

删除功能非常容易让学生搞砸并出现段错误,因此请确保您理解它。它并不太复杂,它最终会成为第二天性。此外,请确保您的函数处理外部情况,例如在空列表中删除。教授们真的希望看到学生在编写代码时将这些考虑在内。


推荐阅读