有个简单链表如下public class MyLinkedList{
private Node header;
private Node tail;
private int size;
public MyLinkedList(){
header = tail = null;
size = 0;}
private class Node {
private Object data;
private Node link;
public Node (Object data){
this data = data;
link = null;
}
}
// add an element to tail.
public void add (Object data ){
Node node = new Node (data);
if (size == 0){
header = tail = node;
}
else {
tail link = node;
tail = node;
}
size ++;
}
}
____________________________________________________________
private class Node {
private Object data;
private Node link;
自己定义自己?
tail link = node;
tail = node;
不理解意思但不知为什么这么写?
private Node header;
private Node tail;
private int size;
public MyLinkedList(){
header = tail = null;
size = 0;}
private class Node {
private Object data;
private Node link;
public Node (Object data){
this data = data;
link = null;
}
}
// add an element to tail.
public void add (Object data ){
Node node = new Node (data);
if (size == 0){
header = tail = node;
}
else {
tail link = node;
tail = node;
}
size ++;
}
}
____________________________________________________________
private class Node {
private Object data;
private Node link;
自己定义自己?
tail link = node;
tail = node;
不理解意思但不知为什么这么写?
你这代码哪抄来的?书上?
tail = node;
哦 你这个变量面放的是地址 也就是指向下一个元素的地址Node,
没问题
private Object data;//本身数据
private Node link;//下个链接
自己定义自己?
=======================
对链表就是自己含有一个自己
tail link = node;
tail = node;
不理解意思但不知为什么这么写?
=======================
代码有误 更正如下
tail.link = node;
tail = node;
含义楼上说了修改了下你的代码加入了测试代码 ,希望能帮助你理解
public class MyLinkedList{
private Node header;
private Node tail;
private int size;
public MyLinkedList(){
header = tail = null;
size = 0;}
private class Node {
private Object data;
private Node link;
public Node (Object data){
this.data = data;
link = null;
}
}
// add an element to tail.
public void add (Object data ){
Node node = new Node (data);
if (size == 0){
header = tail = node;
}
else {
tail.link = node;
tail = node;
}
size ++;
}
public static void main(String[] args) {
MyLinkedList l=new MyLinkedList();
l.add("1");
l.add("2");
l.add("3");
Node a=l.header;
for(int i=0;i<l.size;i++){
System.out.println(a.data);
a=l.tail;
};}
}接分
这样定义,只定义一个引用,(引用就像C中指针一样,不过没有那么灵活,也出错少)
不会在内存中分配空间,引用和类不是一个东西,好好看看你学JAVA的书,是不是在这一块漏看了什么东西:)
不是自己定义自己,而使这个变量可以指向同一个类型。
相当于指针
-------------------------------------
你的测试代码 运行结果为:1
3
3
a=l.tail; //有问题
a=a.link;
哈哈 lz好样的
贴错了
哎 又丢人了