鏈表
class Node2{ //定義一個節點
private String data;
private Node2 next; //要保存的下一個節點
public Node2(String data){ //每一個Node2對象都必須保存相應的數據
this.data=data;
}
public void setNext(Node2 next){
this.next=next;
}
public Node2 getNext(){
return this.next;
}
public String getData(){
return this.data;
}
public void addNode2(Node2 newNode2){
if(this.next==null){ //當前節點的下一個爲null
this.next=newNode2; //保存新節點
}
else{ //當前節點之後還存在節點
this.next.addNode2(newNode2); //當前節點的下一個節點繼續保存
}
}
public void printNode2(){
System.out.println(this.data); //輸出當前節點數據
if(this.next!=null){
this.next.printNode2(); //找到下一個節點繼續輸出(遞歸調用)
}
}
}
class Link{ //數據的設置和輸出
private Node2 root; //根節點
public void add(String data){
Node2 newNode2=new Node2(data); //設置數據的先後關係
if(this.root==null){ //一個鏈表只有一個根節點的情況
this.root=newNode2; //將新的節點設置爲根節點
}
else{ //根節點已存在
this.root.addNode2(newNode2); //交由Node2類來進行節點保存
}
}
public void print(){ //輸出數據
if(this.root!=null){
this.root.printNode2(); //交由Node2類輸出
}
}
}
public class LinkDemo1 {
public static void main(String args[]){
Link link=new Link(); //由這個類負責所有的數據操作
link.add("Hello"); //存放數據
link.add("World");
link.add("小關");
link.print(); //展示數據
}
}
//結果
//Hello
//World
//小關
開發可用鏈表
在鏈表中使用內部類是一個好的選擇。
1.內部類可以使用private定義,這樣一個內部類只能被一個外部類使用;
2.內部類可以方便地與外部類之間進行私有屬性的直接訪問。
例:數據增加:public void add(數據類型 變量)
class Link3{
private class Node{ //定義的內部節點類
private String data;
private Node next; //下一個節點引用
public Node(String data){ //每一個Node類對象都必須保存相應數據
this.data=data;
}
public void addNode(Node newNode){
if(this.next==null){ //若當前的下一個節點爲null
this.next=newNode; //保存節點
}
else{ //向後繼續保存
this.next.addNode(newNode);
}
}
}
private Node root;
public void add(String data){ //假設不允許有null
if (data==null){ //判斷數據是否爲空
return ;
}
Node newNode=new Node(data); //要保存的數據
if (this.root==null){ //當前沒有根節點
this.root=newNode; //保存根節點
}
else{ //根節點存在
this.root.addNode(newNode);
}
}
}
public class LinkDemo2 {
public static void main(String args[]){
Link3 all=new Link3(); //創建鏈表對象
all.add("Hello"); //保存數據
all.add("World");
all.add(null);
}
}