1、链数据实体
/**
* 链数据实体
*
*/
public class Link {
public int iData;
public double dData;
public Link next;
public Link(int id,double dd){
iData = id;
dData = dd;
}
public void displayLink(){
System.out.println("{"+iData+","+dData+"}");
}
}
2、链表
/**
* 链表
*
*/
public class LinkList {
private Link first;
public LinkList(){
first = null;
}
public boolean isEmpty(){
return (first==null);
}
/**
* 插入
* @param id
* @param dd
*/
public void insertFirst(int id,double dd){
Link newLink = new Link(id,dd);
newLink.next=first;
first=newLink;
}
/**
* 删除first
* @return
*/
public Link deleteFirst(){
Link temp = first;
first = first.next;
return temp;
}
/**
* 显示
*/
public void displayList(){
System.out.print("first-->last: ");
Link current = first;
while(current!=null){
current.displayLink();
current = current.next;
}
System.out.println(" ");
}
/**
* 查找
* @param key
* @return
*/
public Link find(int key){
Link current = first;
while(current.iData!=key){
if(current.next==null){
return null;
}else{
current = current.next;
}
}
return current;
}
/**
* 指定删除
* @param key
* @return
*/
public Link delete(int key){
Link current = first;
Link previous = first;
while(current.iData!=key){
if(current.next==null){
return null;
}else{
previous = current;
current = current.next;
}
}
if(current == first){
first = first.next;
}else{
previous.next = current.next;
}
return current;
}
}
关于LinkList 解析
①构造函数
②insertFirst()方法
③deleteFirst()方法
注意:deleteFirst()方法假定链表是不空的。调用之前,程序需要首先调用isEmpty()方法核实链表是否为空。
④displayList()方法
⑤find()方法和delete()方法
3、链表实现
/**
* 链表实现
*
*/
public class LinkListApp {
public static void main(String[] args) {
LinkList theList = new LinkList();
theList.insertFirst(22, 2.969);
theList.insertFirst(44, 4.68);
theList.insertFirst(66, 6.457);
theList.insertFirst(88, 8.647);
theList.displayList();
while(!theList.isEmpty()){
Link link = theList.deleteFirst();
System.out.print("Delede");
link.displayLink();
System.out.println("");
}
theList.displayList();
}
}