欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java实现单链表

程序员文章站 2024-03-01 09:05:58
...
首先是节点的定义:

package LinkList;

public class Node {
public Object data;
public Node next;
public Node(){
this.data=null;
this.next=null;
}

}




以下是链表的实现以及测试代码:

package LinkList;

public class LinkList {
public Node head;
public int length;

public LinkList(){
head=new Node(); //初始化头节点,否则会报空指针异常
length=0;
}

public void headAdd(Object obj){ //从头部插入节点
Node node =new Node(); //新建一个节点,存放待插入的数据
node.data=obj;
node.next=head.next;
head.next=node;
length++;

}

public void tailAdd(Object obj){ //从末尾插入节点
// Node current=head.next; //如果用的是这行,那么在链表里没有节点时插入会有空指针异常。
Node current=head;
while(current.next!=null){ //找到末尾的节点
current=current.next;
}

Node node=new Node();
node.data=obj;
node.next=current.next;
current.next=node;
length++;
}

public void display(){ //输出链表
Node current=head.next;
System.out.print("the " +length+" elements is:");
while(current!=null){
System.out.print(current.data+" ");
current=current.next;
}
}

public void delete(Object obj){ //根据值删除节点
Node current=head;
while(current.next.data!=obj){ //找到待删除节点的前一个节点
current=current.next;
}
current.next=current.next.next;
length--;

}

public Object get(int pos){
if(pos<1||pos>length){ //位置不合法
return false;
}else{
Node node=head.next;
int i=1;
while(i<pos){
node=node.next;
i++;
}
return node.data;
}
}
public static void main(String[] args) {
LinkList ll=new LinkList();
ll.tailAdd(4);
ll.headAdd(3);
ll.headAdd(2);
// ll.delete(3);
ll.headAdd(1);
ll.tailAdd(5);
for(int i=6;i<50;i++)
{
ll.headAdd(i);
}
ll.display();
System.out.println();
System.out.println("the third element is: "+ll.get(3));

}
}

相关标签: java