java数据结构(循环链表)

本文介绍了一种循环链表的实现方式,并通过修改解决了遍历过程中出现的空指针异常问题。文中提供了完整的循环链表类定义及关键操作方法:获取元素、插入元素和删除元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节是循环链表(所谓循环链表,就是一个环,尾巴接着头,所以最后一个结点的下一个节点是头结点,其遍历时判断下一个结点是不是头节点即可),参照单链表进行修改
http://blog.youkuaiyun.com/devenzero/article/details/52049786

public class loopLinkList {

	Node head;
	Node current;
	int size;
	
	loopLinkList(){
		head = current =new Node(null);
		head.next = head;
		size =0;
	}
	
	public Object getElem(int i){
		Node p =  head;
		int j = 1;
		while (j<i+1) {
			p =  p.next;
			++j;
			//System.out.println(p.element);
		}
		if(p==null||j>i+1) return null;
		return p.element;
	}
	
	public boolean insert(int i ,Object e){
		Node p =  head;
		int j = 1;
		while (j<i) {
			p =  p.next;
			++j;
			
		}
		if(p==null||j>i) return false;
		Node s  =  new Node(null);
		s.element = e;
		s.next = p.next;
		p.next = s;
		size++;
		return true;
	}
	
	
	public boolean delete(int i ){
		Node p =  head;
		int j = 1;
		while (j<i) {
			p =  p.next;
			++j;
			
		}
		if(p==null||j>i) return false;
		p.next = p.next.next;
		size--;
		return true;
	}
	
	public void showall(){
		Node p =  head;

		while (!(p.next.equals(head))) {
			p =  p.next;
			System.out.print(p.element+" ");
		}
		System.out.println();
	}
}

这里遇到的 一个问题是空指针

	loopLinkList(){
		head = current =new Node(null);
		head.next = head;
		size =0;
	}
	

这一段代码本来是这样子的

	loopLinkList(){
		head = current =new Node(head);
		size =0;
	}
	

因head结点未声明,故遍历时报错,改完之后方正确运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值