java實現鏈表
阿新 • • 發佈:2018-02-10
this 兩種 class lis 對象 模擬 isp 向上 ... 今天和同學討論時,他說java沒有指針怎麽實現鏈表。的確,在Java中沒有指針。但是,Java中引用和C++中的引用有很大不同,而且具有一定指針的功能(過兩天會總結)。所以,就在家用Java實現了一下鏈表這種數據結構。目前我想到了兩種方法用Java實現鏈表:
1、Java允許類的定義中出現該類對象,所以可以通過對該類對象的引用實現鏈表。
2、可以通過定義一個基類,通過子類的向上轉型。通過父類指針模擬C++中的指針類型,從而實現鏈表。
廢話不多說,上代碼:
方法1 Node.java:
package com.pasilo; public class Node { private int data; private Node next; public Node(){} public Node(int data){ this.data = data; this.next = new Node(); } public int getData(){ return this.data; } public void setData(int value){ this.data = value; } public Node getNext(){ return this.next; } public void setNewNext(int value){ Node newNode = new Node(value); this.next = newNode; } public void setNext(Node node){ this.next = node; } }
方法1 List.java:
package com.pasilo; public class List { private Node head; private Node current; public List(int data){ this.head = new Node(data); current = head; } public void append(int value){ current.setNewNext(value); current = current.getNext(); } public void remove(int destation){ Node pointer = this.head; for(int i=0;i<destation-1;i++){ pointer = pointer.getNext(); } Node temp = pointer.getNext().getNext(); pointer.setNext(temp); } public void insert(int destation,int value){ Node pointer = this.head; for(int i=0;i<destation-1;i++){ pointer = pointer.getNext(); } Node temp = pointer.getNext(); Node newNode = new Node(value); pointer.setNext(newNode); newNode.setNext(temp); } public int at(int index){ Node pointer = this.head; for(int i=0;i<index;i++){ pointer = pointer.getNext(); } return pointer.getData(); } public void display(){ Node pointer = this.head; while(current != pointer){ System.out.println("data is:"+pointer.getData()); pointer = pointer.getNext(); } System.out.println("data is:"+pointer.getData()); System.out.println("this is the end."); } public int size(){ int size = 1; Node pointer = this.head; while(current != pointer){ pointer = pointer.getNext(); size++; } return size; } public static void main(String[] args) { // TODO Auto-generated method stub List list = new List(4); list.append(4); list.append(1); list.append(2); list.insert(2, 10); list.display(); list.remove(2); list.display(); System.out.println(list.at(2)); System.out.println("size of the list:"+list.size()); } }
未完待續..........
java實現鏈表