Java实现链表,java实现
分享于 点击 5779 次 点评:45
Java实现链表,java实现
Java没有指针,那么java靠什么实现指针呢?
java不使用指针,而引用来替代指针,且靠低级的线程来实现自动对垃圾的回收,所以我们就不需要管内存的释放了。
package code;
/**
*date structure
*@author zxls-zmr
*@date 2014年4月16日
*@version 1.7
*/
public class LinkList {
/**
* 链表的定义,关键字,和数据。
*
*/
private class Link{
private int key;
private Object data;
Link next;
public Link(int k,Object d){
key=k;
data=d;
}
}
//判断是否为空
public boolean isEmpty(){
return head==null;
}
//添加结点
public void add(int key,Object data){
Link tmp = new Link(key,data);
tmp.next=head;
head=tmp;
}
//删除结点
public boolean delete(int key){
Link tmp = head;
Link cur = head;
while(tmp.key!=key){
if(tmp==null) return false;
else{
cur=tmp;
tmp=tmp.next;
}
}
if(tmp==head) head=head.next;
else cur.next=tmp.next;
return true;
}
//查找链表里的数据,O(n)
public Link find(int key){
Link tmp=head;
while(tmp.key!=key){
if(tmp==null) return null;
else tmp=tmp.next;
}
return tmp;
}
//插入数据
public void insert(int pos,int key,Object data){
Link tmp=head;
Link cur=head;
int i=1;
if(pos<=0) return;
Link tmp2=new Link(pos,data);
if(pos==1){
tmp2.next=head;
head=tmp2;
return;
}
while(tmp!=null){
if(i++==pos) break;
else{
cur=tmp;
tmp=tmp.next;
}
}
tmp2.next=tmp;
cur.next=tmp2;
}
//打印链表
public void display(){
if(head==null) return;
Link tmp=head;
while(tmp!=null){
System.out.print(tmp.data+"->");
tmp=tmp.next;
}
System.out.println("null");
}
Link head; //表头
//程序的入口
public static void main(String[] args) {
LinkList list = new LinkList();
list.add(0,"c");
list.add(1, "h");
list.add(2,"e");
list.add(3,"n");
list.display();
list.delete(2);
list.display();
list.insert(2,1,"e");
list.display();
System.out.println(list.find(3).data);
}
}
相关文章
- 暂无相关文章
用户点评