【问题标题】:Inputting object in correct position of Linked List在链表的正确位置输入对象
【发布时间】:2011-03-14 23:23:22
【问题描述】:

我有一个 csv 文件,其中包含几行(组号、组中的元素数、元素号),我需要将它们放在链接列表中。我在文件读取 csv 时发生了这种情况,将其放入 tmpPacket 对象中,然后将 tmpPackets 放入 nodeList (链表)中,并尝试将其按顺序添加到链表中,因此如果组# 与上一个相同,将其添加到该组的开头,否则添加到链表的末尾。

无论如何,到目前为止,我已经将它添加到链接列表中,但忽略了其余的组。示例输入是:

4,3,2
5,1,1
4,3,1
4,3,3
2,2,2
3,1,1
2,2,1

基本上我想要它,所以当它被添加到链表时,它看起来像:

4,3,1
4,3,2
4,3,3
5,1,1
2,2,1
2,2,2
3,1,1

(确切的顺序无关紧要。4、5、2和3可以是任何顺序,重要的是4在一起,5在一起......)。

这是我所拥有的,仅输出 4,没有其他内容。

int currLength = nodeList.getLength();
        int finishNum = 0;
        for(int tmpGo=1;tmpGo<=currLength;tmpGo++){
            if(finishNum == 0){
                int itr = 0;
                int addEnd = 0;
                while(itr<nodeList.getLength()){
                    itr++;
                    if(nodeList.getEntry(itr).getPageID() == pageID) {
                        nodeList.add(tmpGo, tmpPacket);
                        finishNum = 1;
                        addEnd = 1;
                        break;
                    } 
                }


            } else {
                break;
            }
        }

【问题讨论】:

    标签: java iterator linked-list


    【解决方案1】:

    所以,我不知道你的 nodeList 是什么,但根据你最初的描述,你需要这个:

    int i;
    int l = list.length();
    for (i = 0; i < l; i++)
        if (list.getEntry(i).key() == newKey)
            break;
    list.insert(newEntry, i);
    

    这个例子假设:

    • 列表条目的编号从 0 到长度 - 1
    • 按长度插入条目与追加条目相同

    但是,它不会产生您的样本结果。相反,您会得到:

    4,3,3
    4,3,1
    4,3,2
    5,1,1
    2,2,1
    2,2,2
    3,1,1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 2018-04-14
      相关资源
      最近更新 更多