当前位置: 首页 > 知识库问答 >
问题:

迭代单个LinkedList中的节点以进行字符串输入

萧星火
2023-03-14

我有一个名为input的字符串,看起来像:i52 i22 i36 i48 i32 d52 d32

每个数字前面的i表示插入,而d表示删除。

每个单独的数字都需要作为节点插入到LinkedList中,如果它是LinkedList的末尾。如果是删除,则从LinkedList中删除。对于删除,它应该删除等于d#的节点。

我当前的代码:

LinkedList<ListNode> list = new LinkedList<ListNode>();
ListNode header = new ListNode(null);

    for (String s: input.split(" ")){

        if (s.charAt(0) == 'i') {
            ListNode node = new ListNode(s);
            node.next = new ListNode(s);
            list.add(node);
        }
        else if (s.charAt(0) == 'd'){
            list.remove(s);
        }
    }

我知道我的代码在插入和删除循环中被弄乱了。如何创建一个新节点,并将其连接到下一个节点?

节点类为:

class ListNode
{
    Object   element;
    ListNode next;

    ListNode(Object theElement ) {
        this(theElement, null );
    }

    ListNode(Object theElement, ListNode n ) {
        element = theElement;
        next    = n;
    }
}

共有2个答案

蒋招
2023-03-14

你的方法似乎是多余的。集合框架的LinkedList

然后,您的代码不会为ixy插入数字xy,而是整个字符串。这可以帮助:

LinkedList<String> list = new LinkedList<String>();

 for (String s: input.split(" ")){
     if(s.startsWith("i")){
         list.add(s.substring(1));
     }
     else if (s.charAt(0) == 'd'){
         list.remove(s.substring(1));
     }
 }

慕容铭
2023-03-14

如果您使用的是Java的LinkedList,那么您需要做的就是:

if (s.charAt(0) == 'i') {
    ListNode node = new ListNode(s);
    list.add(node);
}

LinkedList将负责连接节点和“链接”一切。

如果要创建自己的LinkedList,则必须在其中定义add方法。例如:

class LinkedList{
    ListNode head, tail;

    public void add(Object o){
        //Your add implementation
    }

    // ... other methods    
}
 类似资料:
  • 问题内容: 我将 python3 与 numpy,scipy和opencv结合使用 。 我正在尝试将通过OpenCV和连接的相机接口读取的图像转换为二进制字符串,以通过某种网络连接将其发送到json对象中。 我尝试将数组编码为jpg并解码UTF-16字符串,但没有得到可用的结果。例如, 我得到一个字节字符串作为结果: b’\ xff \ xd8 \ xff \ xe0 \ x00 \ x10JFI

  • 问题内容: 我正在尝试查找给定字符串的排列,但是我想使用迭代。我在网上找到了递归解决方案,但我确实理解它,但是将其转换为迭代解决方案实际上是行不通的。下面附上我的代码。我非常感谢您的帮助: 问题答案: 在我的相关问题评论之后,这是一个Java实现,可以使用Counting QuickPerm Algorithm 来完成您想要的事情:

  • 问题内容: 在我的JavaScript代码中,我需要以以下格式编写一条消息到服务器: 例: 数据可能包含unicode字符。我需要将它们作为UTF-8发送。 我正在寻找最跨浏览器的方法来计算JavaScript中字符串的长度(以字节为单位)。 我已经尝试过以此来组成我的有效载荷: 但是对于较旧的浏览器(或者,也许是UTF-16中的那些浏览器中的字符串?),它不能为我提供准确的结果。 有什么线索吗?

  • 我正在使用JavaFX8创建一个应用程序。我使用拖放动态更改网格窗格的内容。我希望迭代每行或每行/列的GridPane内容。JavaFX允许通过指定行和列在GridPane中添加节点。 我希望通过指定行和列,以相同的方式读取GridPane的节点 我想有一些类似于下面的源代码(下面的代码不正确),

  • 问题内容: 我有一个字符串迭代器。 为了进行排序,我需要从中创建一个列表并使用对其进行排序。 有没有简单的方法可以对迭代器进行排序。 问题答案: 迭代器不是容器,它是遍历容器元素的实用程序。因此,如果您仅有权访问迭代器,则无法更改此迭代器的创建者定义的迭代顺序。 如果您不能更改原始容器,则必须将迭代器传递的元素收集到新的Collection中,并在其中进行排序。 (了解迭代器可能的一种好方法是查看

  • 问题内容: 今天早些时候,我需要一次遍历2个字符的字符串,以解析格式如下的字符串(有一些额外的字母)。 我最终完成了这个工作,但是看起来很丑。我最终评论了它在做什么,因为它感觉不太明显。几乎看起来像是pythonic,但并非完全如此。 有一些更好/更清洁的方法可以做到这一点吗? 问题答案: 邓诺关于清洁剂,但还有另一种选择: 无副本版本: