java - 帮助在 Java 中制作单链表

标签 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;
 }

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

谢谢!

最佳答案

出于某种原因,仍在学习编程的人会使事情变得比他们需要的复杂得多。我在学习 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)节点 elementAt(int index)?用它来遍历链表。如果你想追加到链接列表,试试这个

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

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

insert(value)
    insert(0,value)

关于java - 帮助在 Java 中制作单链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3756599/

相关文章:

java - 检查哈希表中的键与其值之间是否存在值

java - 如何操作 jrxml 模板中指定的 SQL

java - 如何在不同的 Activity 中播放不同的音乐?

c - 读取文本文件并将数据保存在链表中

java - Spring MVC,使用什么 View 组件?

java - ArrayList 调整大小

java - 如何以相反的顺序迭代 LinkedList 元素?

java - Java 中的 2D LinkedList.contains()

c - 制作链接列表

c - 链表遍历**while(thead != NULL)**和while(thead->next !=NULL)的区别