Java 實現簡答的單鏈表的功能
阿新 • • 發佈:2017-05-15
rgs isempty ava pan new mov java bool oid
作者:林子木 博客網址:http://blog.csdn.net/wolinxuebin
參考網址:http://blog.csdn.net/sunsaigang/article/details/5751780
描寫敘述:使用java實現簡答的單鏈表的功能
定義了一個MyList類
包括的函數:
getHead()返回頭指針。
isEmpty() 推斷是否為空;
addFirst(T element)在鏈表的頭部增加元素。
addLast(T element)在鏈表的尾部增加元。
add(T fix,T element)在指定元素fix後插入新的元素
remove(T element) 刪除指定元素
contains(T element)查看是否包括某元素
printList()打印鏈表。
其它:
使用泛型
程序代碼例如以下:
public class MyList<T>{ //使用泛型 /* * 定義節點類Node */ private static class Node<T>{ T element; Node<T> next; Node(T element,Node<T> next){ //構造函數 this.element = element; this.next = next; } Node(T element){ //構造函數 this(element,null); //調用上面的構造函數 } } //定義MyList成員 private Node<T> head; //定義頭結點 /* *構造函數 */ MyList(){ head = null; } /* *返回頭指針 */ public Node<T> getHead(){ return head; } /* *查看鏈表是否為空 */ public boolean isEmpty(){ return null == head; //推斷是否為空 } /* *將元素增加鏈表頭 */ public void addFirst(T element){ if(isEmpty()) head = new Node<T>(element); else head = new Node<T>(element,head); } /* *將元素增加鏈表尾 */ public void addLast(T element){ if(isEmpty()) head = new Node<T>(element);//假設為空 else { Node<T> node = head; //不為空,就使用查找,知道表尾 while(node.next != null) node = node.next; node.next = new Node<T>(element); } } /* *在指定元素後增加新元素 */ public boolean add(T fix,T element){ if(isEmpty()) return false; else { Node<T> node = head; //定義中間變量 while(node.element != fix && null != node.next){//程序跳出條件為1、到表尾 2、找到這個元素 node = node.next; //查找是否含有元素 } //這裏採用直接使用while查找,而推斷在while外面。能夠加高速度 if(node.element == fix){ //這裏首先推斷是否找到元素 node.next = new Node<T>(element,node.next) ;//將element插入。並將element的next指向下一個元素 return true; } else return false; } } /* *刪除指定元素 */ public boolean remove(T element){ if(isEmpty()) return false; Node<T> node = head; //定義變量pre 和 node Node<T> pre = null; while(node.element != element && null != node.next){ //程序跳出條件為1、到表尾 2、找到這個元素 pre = node; //保存前面的變量 node = node.next; //指向下一個元素 } if(node.element == element){ if(null == pre) //假設是指定元素是第一個元素 head = head.next; else pre.next = node.next; return true; } else return false; } /* *查看是否包括某元素 */ public boolean contains(T element){ if(isEmpty()) return false; else { Node<T> node = head; while(node.element != element && null != node.next)//程序跳出條件為1、到表尾 2、找到這個元素 node = node.next; //不斷指向下一個程序 if(node.element == element) return true; else return false; } } /* *打印鏈表 */ public void printList(){ if(isEmpty()){ System.out.println("null"); } else{ for(Node<T> node=head; node!=null;node=node.next) System.out.print(node.element +" "); System.out.println(); //打印回車 } } public static void main(String[] args) { MyList<Integer> list = new MyList<Integer>();//若不加<Integer>便是為指定參數類型,將會警告 //使用了未經檢查或不安全的操作。 //有關具體信息, 請使用 -Xlint:unchecked 又一次編譯。 for(int i=0; i<10; i++){ list.addFirst(i); } list.printList(); //打印 list.remove(0); //刪除 list.printList(); //打印 list.addLast(0); //在尾部增加 list.printList(); //打印 list.add(7,-7); //在7之後插入-7 list.printList(); //打印 if(list.contains(-7)) System.out.println("is in the list !"); else System.out.println("is not in the list !"); } }
Java 實現簡答的單鏈表的功能