建立線性單鏈表,並將單鏈表翻轉
阿新 • • 發佈:2018-12-10
package 資料結構;
public class lianbiao {
public int data;
public lianbiao next;
public lianbiao(int k)
{
data=k;
next=null;
}
public lianbiao(){
this(0);
}
}
首先建立單鏈表的結點類。
package 資料結構; //連結串列反轉 class lianbiao2 extends lianbiao1{ public lianbiao2(){ super(); } public lianbiao2(int n ) { super(n); } public void fanzhuan() { lianbiao p=this.head; lianbiao q=null; lianbiao front=null; while (p!=null){ q=p.next; p.next=front; front=p; p=q; } this.head=front; } } public class lianbiao1 { protected lianbiao head; //判斷是否飛空 public lianbiao1() { head = null; } //初始化 public lianbiao1(lianbiao h1) { head = h1; } //建立單向連結串列 public lianbiao1(int n) { lianbiao rear, q; if (n > 0) { int k = (int) (Math.random() * 100); head = new lianbiao(k); rear = head; for (int i = 0; i < n; i++) { k = (int) (Math.random() * 100); q = new lianbiao(k); rear.next = q; rear = q; } } } //返回連結串列長度 public int length() { int n = 0; lianbiao p = head; while (p != null) { n++; p = p.next; } return n; } public void output() { this.output(head); } public void output(lianbiao p) { while (p!=null){ System.out.print(p.data); p=p.next; if (p!=null) System.out.print("-->");} System.out.println(); } public static void main(String[] args) { lianbiao1 h1=new lianbiao1(8); h1.output(); lianbiao2 h2=new lianbiao2(8); h2.output(); System.out.println("翻轉"); h2.fanzhuan(); h2.output(); } }
在第二個程式碼介面前面要加上import 資料結構.lianbiao;
idea這個軟體直接給略掉了;
這樣就實現了連結串列的建立以及翻轉。