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

来源:4-5 从链表中删除元素

sa1tedFish

2018-08-25

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回答

liuyubobobo

2018-08-25

检查一下你的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
4
sa1tedFish
回复
liuyubobobo
老师我的问题已经解决了,谢谢老师
2018-08-26
共4条回复

ciphermagic

2018-10-24

Node cur = dummyHead.next;


0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程