如何使用破坏第 n 个元素的链表创建程序?

Posted

技术标签:

【中文标题】如何使用破坏第 n 个元素的链表创建程序?【英文标题】:How to create a program with linked list that destroys the nth element? 【发布时间】:2019-04-01 14:00:43 【问题描述】:

我正在创建一个带有链表的程序,该程序具有破坏列表的 nth 元素并将其编号存储在第 n 个元素中的元素的功能。

我创建了一个创建链接列表的程序,但我找不到搜索nth元素的方法。


struct elem 
    int value;
    elem* next;
;
int main() 
    elem* start = NULL, *last;
    int a[4] = 1, 2, 3, 4;
    /// creating
    for(int i = 0; i < 4; i++) 
        elem* p = new elem; /// s1
        p->value = a[i]; /// s2
        p->next = NULL; /// s3
        if(start == NULL) start = p; /// s4a
        else last->next = p; /// s4b
        last = p; /// s5
    
    /// printing
    elem* p = start;
    while (p) 
        cout << p->value << " ";
        p=p->next;
    
    /// deleting
    p = start; /// 1
    while (p) 
        start = p->next; /// 2
        delete p; /// 3
        p = start; /// 4
    

我可以在这里得到一些帮助吗?链表真的很苦恼,提前谢谢!

【问题讨论】:

【参考方案1】:

首先,您需要通过 args[] 将“n”的值传递给 main() 函数

然后,添加一个while循环,就像打印一样,每次遍历链表元素时递增索引,并检查索引是否== n,获取元素值,然后通过调用删除函数删除该元素。

最好将打印/删除部分作为单独的函数,然后通过 main() 调用这些函数。您可以为从 args[]

获得的参数添加一些检查条件

【讨论】:

以上是关于如何使用破坏第 n 个元素的链表创建程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用C++ STL中的链表list

每日一练(剑指offer)链表中倒数最后k个节点

如何用数组实现一个紧凑的链表?

模板中的链表

C - 堆栈分配的链表

Leetcode练习(Python):链表类:第92题:反转链表 II:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。