java数据结构之循环单链表

原创 2016年05月31日 20:38:34

直接上代码举例说明:

public class CircularLinkedList {
	//java中循环单链表
	private class Node {//创建一个内部节点类
		private Node next = null;
		private Object value = null;

		public Node() {

		}

		public Node(Object value) {
			this.value = value;
		}
	}

	private Node head = null;//新建一个null的头结点

	public CircularLinkedList() {//初始化头结点信息
		head = new Node(null);
		head.next = head;
	}

	public void insertNode(Object insertValue) {//在尾部添加节点
		Node node = new Node(insertValue);
		if (head.next == head) {
			head.next = node;
			node.next = head;
		} else {
			Node temp = head;
			while (temp.next != head) {
				temp = temp.next;
			}
			temp.next = node;
			node.next = head;
		}
	}

	public void deleteNode(Object deleteValue) {//删除值为deleteValue的节点
		Node temp = head;
		while (temp.next != head) {
			if (temp.next.value.equals(deleteValue)) {
				temp.next = temp.next.next;
			} else {
				temp = temp.next;
			}
		}
	}

	public Object getIndexValue(int index) {//查找位置为index的节点值
		if (index < 0 || index >= getSize()) {
			return null;
		} else {
			Node node = new Node();
			int count = 0;
			Node temp = head;
			while (temp.next != head) {
				if (count == index) {
					node.value = temp.next.value;
					break;
				} 
				temp = temp.next;

			}
			return node.value;
		}
	}

	public int getValue(Object value) {//查找值为value的节点
		int count = 0;
		Node temp = head;
		while (temp.next != head) {
			if (temp.next.value.equals(value)) {
				return count;
			}
			count++;
			temp = temp.next;
		}
		return -1;
	}

	public int getSize() {//获取循环单链表的长度
		Node temp = head;
		int size = 0;
		while (temp.next != head) {
			size++;
			temp = temp.next;
		}
		return size;
	}

	public boolean isContain(Object value) {//查找是否包含值为value的节点
		Node temp = head;
		while (temp.next != head) {
			if (temp.next.value.equals(value)) {
				return true;
			}
			temp = temp.next;
		}
		return false;
	}

	public void disPlay() {//打印所有节点数据
		Node temp = head;
		while (temp.next != head) {
			System.out.print(temp.next.value + "\t");
			temp = temp.next;
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		CircularLinkedList c=new CircularLinkedList();
		c.insertNode(10);
		c.insertNode(21);
		c.insertNode(12);
		c.insertNode(13);
		c.insertNode(40);
		c.disPlay();
//		System.out.println(c.getSize());
//		System.out.println(c.getIndexValue(-1));
//		System.out.println(c.getValue(40));
//		c.deleteNode(10);
//		c.disPlay();
//		c.deleteNode(40);
//		c.disPlay();
//		c.deleteNode(12);
//		c.disPlay();
		System.out.println(c.isContain(21));
	}
}
如果有什么不清楚或者有啥疑问意见可以加我QQ/微信  208017534  / qiang220316,欢迎一起交流一起进步。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Java实现循环单链表……

相比于C和C++,Java中没有了“结构”,因此就要使用类来描述“结构”,同样的,在实现链表时,就可以使用类来定义节点,然后进行相应的操作,以下是我实现循环单链表的代码,循环单链表和单链表的区别在于最...
  • iNiegang
  • iNiegang
  • 2015年10月06日 16:31
  • 3660

java链表之--单向循环链表

单向链表: http://blog.csdn.net/basycia/article/details/51839045 java链表单向循环链表区别之前的单向链表在于判断结束的代码 whi...
  • basycia
  • basycia
  • 2016年07月06日 15:34
  • 390

Java的循环单链表及其测试程序

  • 2012年04月20日 14:30
  • 7KB
  • 下载

Java循环单链表

/** * 循环链表 */public class CycleLinkedList { private static final String TAG = “CycleChain”...
  • IMBA123456789
  • IMBA123456789
  • 2016年09月09日 21:57
  • 513

单向循环链表(JAVA)

  • 2010年05月23日 15:16
  • 1KB
  • 下载

Java实现循环链表

本案例需要完成的任务定义如下:实现一个循环链表(单链表),具备增加元素、删除元素、打印循环链表等功能。网上许多同类问题的实现方式过于复杂、难懂,本文旨在提出一种实现循环链表的简单、易懂的方法。 对于循...
  • elecjack
  • elecjack
  • 2016年03月30日 22:03
  • 1437

单链表是否有环(Java版)

题目:判断一个带头结点的单链表L是否有环 解题思路: 咋看之下,这题还真不好解,于是又一些投机取巧的人,在访问单链表中元素的时候,用一个比较大的数N控制访问元素的个数,他们认为如果在访问到第N个元素...
  • lavor_zl
  • lavor_zl
  • 2015年01月16日 21:29
  • 1568

java 循环链表(实例)

此循环列表包括基本的增删改查
  • lv836735240
  • lv836735240
  • 2014年08月16日 20:10
  • 2889

Java实现循环单链表……

相比于C和C++,Java中没有了“结构”,因此就要使用类来描述“结构”,同样的,在实现链表时,就可以使用类来定义节点,然后进行相应的操作,以下是我实现循环单链表的代码,循环单链表和单链表的区别在于最...
  • iNiegang
  • iNiegang
  • 2015年10月06日 16:31
  • 3660

Java实现循环链表

本案例需要完成的任务定义如下:实现一个循环链表(单链表),具备增加元素、删除元素、打印循环链表等功能。网上许多同类问题的实现方式过于复杂、难懂,本文旨在提出一种实现循环链表的简单、易懂的方法。 对于循...
  • elecjack
  • elecjack
  • 2016年03月30日 22:03
  • 1437
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java数据结构之循环单链表
举报原因:
原因补充:

(最多只允许输入30个字)