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 !");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值