java单链表查询功能,Java 实现简答的单链表的功能
作者:林子木 ?博客網址: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{ //使用泛型
/*
* 定義節點類Node
*/
private static class Node{
T element;
Node next;
Node(T element,Node next){ //構造函數
this.element = element;
this.next = next;
}
Node(T element){ //構造函數
this(element,null); //調用上面的構造函數
}
}
//定義MyList成員
private Node head; //定義頭結點
/*
*構造函數
*/
MyList(){
head = null;
}
/*
*返回頭指針
*/
public Node getHead(){
return head;
}
/*
*查看鏈表是否為空
*/
public boolean isEmpty(){
return null == head; //推斷是否為空
}
/*
*將元素增加鏈表頭
*/
public void addFirst(T element){
if(isEmpty()) head = new Node(element);
else head = new Node(element,head);
}
/*
*將元素增加鏈表尾
*/
public void addLast(T element){
if(isEmpty()) head = new Node(element);//假設為空
else {
Node node = head; //不為空,就使用查找,知道表尾
while(node.next != null) node = node.next;
node.next = new Node(element);
}
}
/*
*在指定元素后增加新元素
*/
public boolean add(T fix,T element){
if(isEmpty()) return false;
else {
Node node = head; //定義中間變量
while(node.element != fix && null != node.next){//程序跳出條件為1、到表尾 2、找到這個元素
node = node.next; //查找是否含有元素
}
//這里採用直接使用while查找,而推斷在while外面。能夠加高速度
if(node.element == fix){ //這里首先推斷是否找到元素
node.next = new Node(element,node.next) ;//將element插入。并將element的next指向下一個元素
return true;
}
else
return false;
}
}
/*
*刪除指定元素
*/
public boolean remove(T element){
if(isEmpty()) return false;
Node node = head; //定義變量pre 和 node
Node 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 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 node=head; node!=null;node=node.next)
System.out.print(node.element +" ");
System.out.println(); //打印回車
}
}
public static void main(String[] args) {
MyList list = new MyList();//若不加便是為指定參數類型,將會警告
//使用了未經檢查或不安全的操作。
//有關具體信息, 請使用 -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单链表查询功能,Java 实现简答的单链表的功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪赵长江:收到很多高端MPV智能化建
- 下一篇: 手一抖被迫看广告!央视批App摇一摇开屏