java数据结构 链表

定义结点类

包括数据域、指针域

/*
 * 链结点
 */
public class Node {
	//数据域
	public long data;
	//指针域
	public Node next;
	//默认构造方法
	public Node(long value){
		this.data=value;
	}
	/*
	 * 显示方法
	 */
	public void display(){
		System.out.println(data+" ");
	}
}

定义链表类

<pre name="code" class="java">/*
 * 链表
 */
public class LinkList {
	// 头结点
	private Node first;

	public LinkList() {
		first = null;
	}
}

 

链表操作

1、插入

每次从头插入

	/*
	 * 插入一个结点,在头结点后进行插入
	 */
	public void insertFirst(long value) {
		Node node = new Node(value);
		if (first == null)
			first = node;
		else {
			node.next = first;
			first= node;
		}
	}
2、查找

	/*
	 * 查找
	 */
	public Node find(long value){
		Node cur=first;
		while(cur.data!=value){
			if(cur.next==null)
				return null;
			cur=cur.next;
		}
		return cur;
	}
3、删除

每次从头删除

	/*
	 * 删除一个结点,在头结点后进行删除
	 */
	public Node deleteFirst() {
		Node tmp = first;
		first = tmp.next;
		return tmp;
	}
根据数据域删除

	/*
	 * 删除,根据数据域
	 */
	public Node delete(long value){
		Node cur=first;  //当前结点
		Node pre=first;   //前一个结点
		while(cur.data!=value){
			if(cur.next==null)
				return null;
			pre=cur;
			cur=cur.next;
		}
		if(cur==first){   //删第一个结点
			first=first.next;
		}
		else{   //不是第一个结点
			pre.next=cur.next;		
		}
		return cur;
	}
4、显示

	/*
	 * 显示
	 */
	public void display() {
		Node cur = first;
		while (cur!= null) {   //循环条件是当前结点不为空
			cur.display();
			cur = cur.next;
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值