帮助用Java创建单链表

时间:2010-09-21 01:00:23

标签: java linked-list

这是作业,但请知道我在网上寻求帮助(例如http://www.sethi.org/classes/class_stuff/cis435/others/notes-java/data/collections/lists/simple-linked-list.html)和我的教科书,但我仍有一些问题。

任何帮助将不胜感激......

现在我正试图插入值,但没有任何工作。它是第一个项目,是否被添加为最后一个项目,或者介于两者之间。

Node header = null;    // First element of list.
Node back  = null;    // Last element of list.

public void insert(int i, double value){ //insert value before i-th element
  Node e = new Node();
  e.num = value;
  Node curr = header;
  for(int x=0;x<i;x++) {
   if (i == 1) { //we want to insert as first thing
    if (size == 0) { //its the FIRST time we add something
     header.next = e;
     e.next = back;
     break;
    } else if (size == 1){
     e.next = header.next; //i.e. the second thing in the list
     header.next = e;
     break;
    } else {
     e.next = header.next.next; //i.e. the second thing in the list
     header.next = e;
     break;
    }
   }
   else if (x == (i-1)) {
    e.next = curr.next;
    curr.next = e;
    break;
   }
   curr = curr.next;
  }
  size = size+1;
 }

不确定为什么它不起作用。

谢谢!

3 个答案:

答案 0 :(得分:3)

出于某种原因,仍在学习编程的人会使事情变得复杂得多。我在学习java时就这样做了,当我刚学习一门新语言的时候我仍然这样做,而且我已经标记过的学生会找到新的和令人惊奇的方法来实现它。你在插入中有更多的东西,然后需要有,例如,在特定索引处插入值的方法不应该检查它是否是要插入的第一个项目(不是说它不应该检查边界)。这是我要做的伪代码。

insert(index, value)
    if index>size
        throw null pointer
    traverse to index -1 //lets call this nodeI
    create newnode and set value
    set newnode.next to nodeI.next
    set nodeI.next to newnode
    increase size.

为你提供了一些方便的提示,你应该有一个函数从链接列表中获取一个元素,返回一个节点?例如,public node elementAt(int index)?用它来遍历链表。如果要附加到链接列表,请尝试此

append(value)
    insert(size-1,value)

如果你想在开头插入?同样的想法

insert(value)
    insert(0,value)

答案 1 :(得分:1)

一些建议:

  1. 实现java.util.List
  2. 考虑泛型
  3. 阅读this
  4. 在考虑“插入i”之前,先从“插入结尾”开始。

答案 2 :(得分:1)

  1. e.next = header.next.next行中如果header.next指向'null'会发生什么?是否有可能到达那里?
  2. 您需要处理的角落情况是什么?您是否已将它们全部考虑在内?
  3. 您可以先从最简单的情况开始,在前面添加元素或在后面添加元素吗?然后使用这些函数来实现插入?