前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java数据结构之循环单链表

java数据结构之循环单链表

作者头像
林老师带你学编程
发布2022-11-30 10:31:47
2560
发布2022-11-30 10:31:47
举报
文章被收录于专栏:强仔仔

直接上代码举例说明:

代码语言:javascript
复制
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));
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档