开发者社区> 云栖-lxl> 正文

java实现单链表

简介: 前面已经介绍了java如何实现顺序链表:http://www.cnblogs.com/lixiaolun/p/4643664.html 接下来,我们开始学习java实现单链表。   单链表类 package linklist; public class LinkList { ...
+关注继续查看

前面已经介绍了java如何实现顺序链表:http://www.cnblogs.com/lixiaolun/p/4643664.html

接下来,我们开始学习java实现单链表。

 

单链表类

package linklist;

public class LinkList {
	
	class Element
	{
		public Object value=null;
		private Element next=null;
	}
	private Element header = null;//头结点
	/**
	 * 初始化链表
	 * */
	void initList()
	{
		header = new Element();
		header.value=null;
		header.next=null;
	}
	
	/**
	 * 插入链表
	 * */
	void insertList(Object o)
	{
		Element e=new Element();
		e.value=o;
		if(header.next==null)//第一次插入元素
		{
			header.next=e;
		}else//不是第一次插入元素
		{
			//temp引用在栈中,temp和header引用都指向堆中的initList()中new的Element对象
			Element temp = header;
			while(temp.next!=null)//寻找最后一个元素
			{
				temp=temp.next;
			}
			temp.next=e;
		}
	}
	
	/**
	 * 删除链表中第i个元素
	 * */
	void deletelist(Object o)
	{
		Element temp =header;
		while(temp.next!=null)
		{
			//判断temp当前指向的结点的下一个结点是否是要删除的结点
			if(temp.next.value.equals(o))
			{
				temp.next=temp.next.next;//删除结点
			}else
			{
				temp=temp.next;//temp“指针”后移
			}
		}
	}
	
	/**
	 * 获取链表的第i个位置的元素
	 * */
	Element getElement(int i)
	{
		if(i<=0 || i>size())
		{
			System.out.println("获取链表的位置有误!返回null");
			return null;
		}
		else
		{
			int count =0;
			Element element = new Element();
			Element temp = header;
			while(temp.next!=null)
			{
				count++;
				if(count==i)
				{
					element.value=temp.next.value;
				}
				temp=temp.next;
			}
			return element;
		}
	}
	/**
	 * 链表长度
	 * */
	int size()
	{
		Element temp = header;
		int size=0;
		while(temp.next!=null)
		{
			size++;
			temp=temp.next;
		}
		return size;
	}
	
	/**
	 * 判断链表中是否存在某元素
	 * */
	Boolean isContain(Object o)
	{
		Element temp =header;
		while(temp.next!=null)
		{
			if(temp.next.value.equals(o))
			{
				return true;
			}
			temp=temp.next;
		}
		return false;
	}
	/**
	 * 打印链表
	 * */
	void print()
	{
		System.out.print("打印链表:");
		Element temp =header;
		while(temp.next!=null)
		{
			temp=temp.next;
			System.out.print(temp.value+"\t");
		}
		System.out.println();
	}
}

  测试类

package linklist;

public class LinkListMain {

	public static void main(String[] args) {
		LinkList lList = new LinkList();
		lList.initList();
		lList.insertList(1);
		lList.insertList(2);
		lList.insertList(3);
		lList.insertList(4);
		lList.insertList(5);
		lList.print();
		lList.deletelist(2);
		lList.print();
		System.out.println("链表长度:"+lList.size());
		System.out.println("第1个元素值为:"+lList.getElement(1).value);
		System.out.println("第2个元素值为:"+lList.getElement(2).value);
		System.out.println("第3个元素值为:"+lList.getElement(3).value);
		System.out.println("第4个元素值为:"+lList.getElement(4).value);
		
		System.out.println(lList.isContain(2));
		System.out.println(lList.isContain(6));
		System.out.println(lList.isContain(5));
	}

}

  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java实现单词计数MapReduce
本文分享实现单词计数MapReduce的方法
144 0
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
301 0
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
213 0
Java实现图书管理系统
本篇文章是对目前Java专栏已有内容的一个总结练习,希望各位小主们在学习完面向对象的知识后,可以阅览本篇文章后,自己也动手实现一个这样的demo来加深总结应用已经学到知识并进行巩固。
183 0
java实现spring boot项目启动时,重启Windows进程
java实现spring boot项目启动时,重启Windows进程
300 0
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
如果要在某一个界面里面添加功能的话,都在一个类中,会显得代码难以阅读,而且修改起来也会很困难,所以我们将游戏主界面、登录界面、以及注册界面都单独编成一个类,每一个类都继承JFrame父类,并且在类中创建方法来来实现页面
200 0
Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等
ip地址的分类: 1、ipv4、ipv6 127.0.0.1:4个字节组成,0-255,42亿;30亿都在北美,亚洲就只有4亿 2011年就用尽了。
137 0
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
注意由于我们计步功能的步数要在重写方法中用到,所以不能将初始化语句写在方法体内,而是要写在成员位置。在其名字的时候也要做到“见名知意”,所以我们给它起名字为step
102 0
Java实现拼图小游戏(7)—— 作弊码和判断胜利
当我们好不容易把拼图复原了,但是一点提示也没有,完全看不出来是成功了,那么我们就需要有判断胜利的功能去弹出“成功”类的图片,以便于玩家选择是重新开始还是退出小游戏
110 0
Java实现拼图小游戏(7)——查看完整图片(键盘监听实例2)
由于在移动和图片中我们已经添加了键盘监听,也继承了键盘监听的接口,那么我们只需要在重写方法内输入我们的代码即可
76 0
+关注
云栖-lxl
java程序员
文章
问答
视频
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
JAVA开发手册1.5.0
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多