首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

聚合框架-双向链表的模拟实现

2012-12-22 
集合框架--双向链表的模拟实现Java中的鏈表,分為三種: ????? 1.單向鏈表,由一個節點元素,可以找到相鄰的下

集合框架--双向链表的模拟实现

Java中的鏈表,分為三種:

????? 1.單向鏈表,由一個節點元素,可以找到相鄰的下一個節點元素.

????? 2.雙向鏈表,由一個節點元素,可以找到其相鄰的前/后節點元素.

????? 3.循環鏈表,由一個節點元素,可以找到其相鄰的前/后節點元素,由最后一個節點元素可以找到第一個節點元素.

有關Java的集合框架的相關知識,請參考 Java API,此處僅用示例來模擬集合框架中[雙向鏈表] 的實現.

?

1. 定義一個節點類

?

package collection;public class Node {//下一個節點private Node next;//前一個節點private Node prev;//節點中的數據private Object data;public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}public Node getPrev() {return prev;}public void setPrev(Node prev) {this.prev = prev;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}}

?

2. 定義一個鏈表類

?

package collection;public class LinkedNode {//首節點private Node firstNode = null;//節點的長度private int size = 0;//添加數據和節點public void put(Node node, Object data) {//將數據存入節點中node.setData(data);//設置節點的位置if (null == firstNode) {firstNode = node;} else {// 查找最后一个节点Node lastNode = firstNode;//while (null != lastNode.getNext()) {lastNode = lastNode.getNext();}//設置下一個節點lastNode.setNext(node);//設置前一個節點node.setPrev(lastNode);}size++;}//獲取指定位置的節點對象public Node get(int index) {Node node = firstNode;//if (index != 0) {do {node = node.getNext();} while (--index > 0);}return node;}//獲取節點長度public int size() {return size;}}
?

3. 新建一個測試類

?

package collection;public class LinkedListTest {public static void main(String[] args) {LinkedNode ln = new LinkedNode();//定義節點Node n1 = new Node();Node n2 = new Node();Node n3 = new Node();Node n4 = new Node();Node n5 = new Node();Node n6 = new Node();Node n7 = new Node();Node n8 = new Node();Node n9 = new Node();//往節點中存入數據ln.put(n1, "aa");ln.put(n2, "bb");ln.put(n3, "cc");ln.put(n4, "dd");ln.put(n5, "ee");ln.put(n6, "ff");ln.put(n7, "gg");ln.put(n8, "hh");ln.put(n9, "ii");Node n = ln.get(3);//當前的節點System.out.println("當前節點中數據:"+n.getData());//前一個節點Node p = n.getPrev();System.out.println("當前節點的前一個節點中數據:"+p.getData());//后一個節點Node next = n.getNext();System.out.println("當前節點的后一個節點中數據:"+next.getData());}}
?

4. 運行結果如下

聚合框架-双向链表的模拟实现

?

?

?

?

?

热点排行