JAVA数据结构与算法的学习——单链表的实现

今天用JAVA实现数据结构中的单链表,思路就不重复了,大家仔细品味代码。
第一步,在包里建立LinkList类,用于定义链表和一下操作链表的方法
LinkList类

public class  LinkList {
	public Node head; //头引用
	public Node rear; //尾引用
	public Node point;//临时引用
	public int length;//链表长度
	//链表的构造函数,创建无数据的头节点
	public LinkList() {
		head = new Node();
		rear = head;
		length = 0;
	}
	//从尾部插入链表
	public void add(int data) {
		point =new Node(data);
		rear.next = point;
		rear = point;
		length++;
	}
	//在指定位置插入元素成为第p个元素
	public void insert(int position,int data) {
		Node tmp = new Node(data);
		if(position>0 && position<=length) {
			int i =1;
			point = head;
			//查找到第position-1位的元素,将引用point指向它
			while(i=0 && position <=length) {
			int i=1;
			point = head;
			while(i<=position) {
				point = point.next;
				i++;
			}
			return point.data;
		}else {
			System.out.println("查找失败,没有指定位置的元素");
			return null;
		}
	}
	//删除指定位置元素
	public void remove(int position) {
		if(position >=0 && position 0 && position<=length) {
			int i=1;
			point = head;
			while(i<=position) {
				point = point.next;
				i++;
			}
			point.data = data;
		}else {
			System.out.println("修改失败,没有指定位置的元素");
		}
	}
	//查找元素的值,返回下标
	public Object search(int data) {
		point = head.next;
		int i=1;
		while(point != null) {
			if(point.data.equals(data)) {
				break;
			}
			i++;
			point = point.next;
		}
		if(i>length) {
			System.out.println("没有找到该元素");
			return null;
		}
		return i;
	}
	//清空链表(java垃圾回收,当对象没有引用指向)
	public void clear() {
		while(head.next !=null) {
			head.next = head.next.next;
		}
		rear = head;
		point = null;
		length = 0;
		System.gc();
	}
}

第二步,在包里建立Node类,用于定义节点数据域和所谓的指针域
Node类:

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

最后就是简单的测试了,对每个方法进行测试并输出结果,检验是否有异常

public class Test {

	public static void main(String[] args) {
		LinkList L = new LinkList();
		L.add(1);
		L.add(2);
		L.add(3);
		L.printList();
		System.out.println(L.getLength());
		System.out.println(L.find(3));
		L.insert(3, 4);
		L.printList();
		L.set(3, 3);
		L.printList();
		L.set(4, 4);
		L.printList();
		L.remove(2);
		L.printList();
		System.out.println(L.search(2));
		L.clear();
		L.printList();
		L.add(1);
		L.add(2);
		L.add(3);
		L.printList();
	}

}

测试结果
JAVA数据结构与算法的学习——单链表的实现_第1张图片
不对之处还请各位不吝赐教

你可能感兴趣的:(数据结构与算法,数据结构与算法)