请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师,为什么我的链表运行出来没有“->”和NULL啊?

package LinkList;


public class LinkList<E> {


//节点类(内部类)

private class Node

{

public E e;

public Node next;

public Node(E e, Node next)

{

this.e = e;

this.next = next;

}

public Node(E e)

{

this(e , null);

}

public Node()

{

this(null , null);

}

@Override

public String toString()

{

return e.toString();

}

}

private Node dummyHead;

int size;

public LinkList()

{

dummyHead = new Node(null, null);

size = 0;

}

//获取链表中元素个数

public int getSize()

{

return size;

}

//返回链表是否为空 

public boolean isEmpty()

{

return size == 0;

}

//在链表中间index添加新元素e

//在链表中不常用,练习用

public void add(int index, E e)

{

if(index < 0 || index > size)

throw new IllegalArgumentException("位置不合法");

Node prev = dummyHead;

for(int i = 0 ; i < index ; i ++)

{

prev = prev.next ;

}

Node node = new Node(e, prev.next);

prev.next = node;

size ++;

}

//在链表头添加元素e

public void addFirst(E e)

{

    add(0, e);

}

//在链表末尾添加新元素

public void addLast(E e)

{

add(size, e);

}

//获得链表的第index个位置的元素

//非常用操作,练习用

public E get(int index)

{

if(index < 0 || index > size)

throw new IllegalArgumentException("不存在要找的位置");

Node cur = dummyHead.next ;

for(int i = 0 ; i < index ; i ++)

{

cur = cur.next;

}

return cur.e;

}

//获得链表的第一个元素

public E getFirst()

{

return get(0);

}

//获得链表的最后一个元素

public E getLast()

{

return get(size - 1);

}

//修改链表的第index个位置的元素为e

//在链表中不常用,练习用

public void set(int index, E e)

{

if(index < 0 || index > size)

throw new IllegalArgumentException("修改位置不存在!");

Node cur = dummyHead.next;

for(int i = 0 ; i < index ; i ++)

{

cur = cur.next;

}

cur.e = e;

}

//查找链表中是否有元素e

public boolean contains(E e)

{

Node cur = dummyHead;

while(cur != null)

{

if(cur.e == e)

return true;

cur = cur.next;

}


}

return false;

}

@Override

public String toString()

{

StringBuilder ret = new StringBuilder();

//ret.append("LinkList");

Node cur = dummyHead;

while(cur != null)

{

ret.append(cur + ">");

cur = cur.next;

}

ret.append("NULL");

return ret.toString();

}

}

package LinkList;


import java.util.LinkedList;


public class Main {


public static void main(String[] args) {

// TODO Auto-generated method stub


LinkedList<Integer> linklist = new LinkedList<>();

for(int i = 0 ; i < 5 ; i ++)

{

linklist.addFirst(i);

System.out.println(linklist.toString());

}

linklist.add(2,666);

System.out.println(linklist.toString());

}


}


正在回答

2回答

检查一下你的LinkedList中toString实现?可以参考课程的官方github的本课程源代码。传送门:https://github.com/liuyubobobo/Play-with-Data-Structures


本小节代码:https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/04-Linked-List/05-Remove-Element-in-LinkedList/src/LinkedList.java


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 sa1tedFish #1
    谢谢老师,但是我把GitHub上面的代码复制到eclipse上面,结果还是没有,是我的eclipse的问题吗?
    回复 有任何疑惑可以回复我~ 2018-08-25 18:11:47
  • liuyubobobo 回复 提问者 sa1tedFish #2
    课程整体是基于Java8的,请确认自己的Eclipse对应的Java版本是Java8的。如果是完整复制课程官方github上的代码的话,应该是环境配置问题。请再尝试一下不要复制代码,直接完整运行github上的文件试试看?(确认一下你的复制过程没有问题)加油!
    回复 有任何疑惑可以回复我~ 2018-08-26 01:47:16
  • 提问者 sa1tedFish 回复 liuyubobobo #3
    我试了,我发现我在LinkedListStack类里面调用list的toString方法运行出来就没问题,但是在LinkedList类里面就还是不行。。。
    回复 有任何疑惑可以回复我~ 2018-08-26 16:18:36
ciphermagic 2018-10-24 11:25:01
Node cur = dummyHead.next;


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信