码迷,mamicode.com
首页 > 编程语言 > 详细

Java数据结构系类之——链表(3):双向链表及相关常用操作

时间:2014-11-22 17:26:32      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:io   java   for   数据   on   ad   amp   as   size   

package LinkList.doublelinklist;

public class Node {
	public int data;//数据域
	public Node next;//结点域,下一个结点
	public Node prve;//结点域,前一个结点
	
	//头结点初始化
	public Node(Node next){
		this.data=data;
		this.next=next;
		this.prve=null;
	}
	
	//非头结点初始化
	public Node(int data,Node next,Node prve){
		this.data=data;
		this.next=next;
		this.prve=prve;
	}
}

************************************************************************************************************************************

package LinkList.doublelinklist;


public class DoubleLinkList {
	Node head;// 头结点
	int size;// 链表大小
	Node current;// 当前结点

	// 初始化空链表
	public DoubleLinkList() {
		this.head = new Node(null);
		this.size = 0;
		this.current = head;
	}

	// 判断线性表是否为空
	public boolean isEmpty() {
		return size == 0;
	}

	// 获取指定位置的元素,这里我们定义头结点head的index为-1
	public Node getElement(int index) {
		if (index < -1 || index >= size) {
			throw new RuntimeException("参数错误");
		}

		if (index == -1) {
			current = head;
		} else {
			current = head.next;
		}

		for (int i = 0; i < index && current.next != null; i++) {
			current = current.next;
		}

		return current;
	}

	// 在指定位置插入元素,这里我们定义头结点head的index为-1
	public void insert(int index, int data) {
		Node node = new Node(data, null,null);

		Node prev = getElement(index - 1);// 当前结点的前一个结点
		current=prev.next;//当前结点
		if(current!=null){
			 node.prve=prev;
		     node.next=current;
		     current.prve=node;
		     prev.next=node;
		}else{
			node.prve=prev;
		    node.next=current;
		    prev.next=node;
		} 
		size++;
	}

	// 删除指定位置的元素
	public void delete(int index) {
		if (index > size - 1) {
			throw new RuntimeException("参数错误");
		}
		Node prev = getElement(index - 1);// 当前结点的前一个结点

		current = prev.next;
		prev.next = current.next;
		current.prve = prev;
		size--;
	}

	// 打印链表
	public void traverse() {
		if (isEmpty()) {
			System.out.println("null");
		} else {
			current = head.next;
			while (current != null) {
				System.out.print(current.data + " ");
				current = current.next;
			}
			System.out.println();
		}
	}
}


Java数据结构系类之——链表(3):双向链表及相关常用操作

标签:io   java   for   数据   on   ad   amp   as   size   

原文地址:http://blog.csdn.net/tmwl0728/article/details/41383349

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!