黑马程序员技术交流社区
标题: 链表分析问题? [打印本页]
作者: jagon 时间: 2014-3-13 13:35
标题: 链表分析问题?
/*虽然链表已经学完了,可我心中总有些不舒服,因为有一个问题始终感觉特别难受,有时候好像能想通,有时候又想不通,谁能帮忙分析分析,看看能不能讲的更明白些!*/
class Node {
private String data ; // 假设要保存的数据类型是字符串
private Node next ;
public Node(String data) {
this.data = data ;
}
public String getData() {
return this.data ;
}
public void setNext(Node next) {
this.next = next ;
}
public Node getNext() {
return this.next ;
}
public void addNode(Node newNode) { // 操作的是节点关系
if (this.next == null) { // 当前节点的next属性指向为null,this指代当前调用addNode()方法的Node对象,也即root节点对象
this.next = newNode ; // 保存新节点,此处this代表当前调用addNode()方法的Node对象,即root节点对象
} else {
this.next.addNode(newNode) ; //this.next指代当前对象,当前对象有调用addNode()方法,不是就进入递归了吗?这样还怎么往下传递?
}
}
public void printNode() {
System.out.println(this.data) ;
if (this.next != null) { // 还有下一个节点
this.next.printNode() ;
}
}
}
class Link { // 处理节点关系
private Node root ; // 根节点对象
public void add(String data) { // 处理数据保存
if (data == null) { // 没有数据
return ; // 直接返回,不在往下处理
}
// 每一个数据如果要想保存在链表之中,必须将其封装为节点
// 这一操作的过程外部(用户)不需要知道
Node newNode = new Node(data) ; //将传入的数据data封装成一个Node对象newNode
if (this.root == null) { // 现在没有根节点,this指代本类属性
this.root = newNode ; // 第一个作为根节点(将对象newNode的地址值赋给root)
} else {
this.root.addNode(newNode) ; //this.root指代本类属性(也即root对象)
}
}
public void print() {
if (this.root != null) { // 现在有根节点
this.root.printNode() ; // Node类处理,this.root是一个Node对象,可以调用printNode方法
}
}
}
public class TestDemo {
public static void main(String args[]) {
Link all = new Link() ;
all.add("Hello") ;
all.add("World") ;
all.add("MLDN") ;
all.print() ;
}
}
问题在中间部分:
this.next.addNode(newNode) ; //this.next指代当前对象,当前对象有调用addNode()方法,不是就进入递归了吗?这样还怎么往下传递?
作者: jagon 时间: 2014-3-13 14:11
仔细想想,好像是明白了,可是绕几次就糊涂了,还是要多想,谢谢了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |