链表

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();
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值