java实现顺序链表

简介: C&C++是那么难学,以至于我连指针是什么都不知道。所以只能学习java了。 如今想用java实现N年前学过“数据结构(c语言版)”却又是那么吃力! 慢慢练吧! 写此博客,仅标记自己学过数据结构。

 

C&C++是那么难学,以至于我连指针是什么都不知道。所以只能学习java了。

如今想用java实现N年前学过“数据结构(c语言版)”却又是那么吃力!

慢慢练吧!

写此博客,仅标记自己学过数据结构。以《数据结构(C语言版)》-严蔚敏 书本为参考。

 

顺序链表的java类文件:SequenceList.java文件

package list;



public class SequenceList {
	private int LIST_INIT_SIZE = 5;//链表的原始大小
	private int INCREMENT =1;//链表的增量大小
	private Object []SqList = null;//链表
	private int curIndex=0;//当前位置
	/**
	 * 初始化链表
	 * */
	public void initList()
	{
		SqList = new Object[LIST_INIT_SIZE];
	}
	/**
	 * 向链表中插入元素
	 * */
	public void insertList(Object o)
	{
		if(curIndex>LIST_INIT_SIZE-1)//判断当前链表是否已经满
		{
			//从新为链表分配空间
			System.out.println("从新分配空间");
			LIST_INIT_SIZE+=INCREMENT;
			Object []temp = new Object[LIST_INIT_SIZE];
			for(int i=0;i<curIndex;i++)
			{
				temp[i]=SqList[i];
			}
			SqList=null;
			SqList=temp;
		}
		//链表中如果不让其包含重复元素,则加入这段代码
		/*
		if(isContain(o))
		{
			System.out.println("链表中已包含此元素"+o);
		}else
		{
			
		}
		*/
		SqList[curIndex++]= o;
	}
	/**
	 * 判断链表中是否包含某元素
	 * */
	Boolean isContain(Object o)
	{
		for(int i=0;i<curIndex;i++)
		{
			if(SqList[i].equals(o))
			{
				return true;
			}
		}
		return false;
	}
	/**
	 * 删除链表中的某元素
	 * 
	 * 如果包含重复元素都删除
	 * */
	public void delete(Object o)
	{
		for(int i=0;i<curIndex;i++)
		{
			if(SqList[i].equals(o))
			{
				for(int j=i;j<curIndex-1;j++)
				{
					SqList[j]=SqList[j+1];
				}
				curIndex--;
				continue;
			}
			if(i==curIndex-1)
			{
				System.out.println("不存在此元素"+o);
			}
		}
	}
	
	/**
	 * 获取链表中的某个元素
	 * */
	public Object getElement(int i)
	{
		if (i <= 0 || i > curIndex) 
		{
			System.out.println("获取位置超出了链表中元素个数"+curIndex);
		}
		return SqList[i-1];
	}
	/**
	 * 打印链表
	 * */
	public void print()
	{
		for(int i=0;i<curIndex;i++)
		{
			System.out.print(SqList[i]+"\t");
		}
		System.out.println();
	}
	
}

  Main函数测试类

package list;

public class SequenceListMain {

	public static void main(String[] args) {
		SequenceList sqList = new SequenceList();
		sqList.initList();
		sqList.insertList(1);
		sqList.insertList(2);
		sqList.insertList(3);
		sqList.insertList(4);
		sqList.insertList(5);
		sqList.insertList(6);
		sqList.delete(5);
		sqList.delete(9);
		sqList.insertList(1);
		sqList.print();
		
		sqList.delete(1);
		sqList.print();
		
		System.out.println("第2个元素是:"+sqList.getElement(1));
		System.out.println("第4个元素是:"+sqList.getElement(4));
		
	}

}

  

目录
相关文章
|
2月前
|
Java
java数据结构,双向链表的实现
文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
java数据结构,双向链表的实现
|
1月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
25 3
|
5月前
|
Java
环形数组链表(java)
环形数组链表(java)
|
3月前
|
存储 Java
|
3月前
|
存储 Java
java实现单链表的创建、增、删、改、查
这篇文章详细介绍了Java中如何实现单链表的创建以及对单链表进行增加、删除、修改、查询等操作的方法,并提供了相应的代码示例。
java实现单链表的创建、增、删、改、查
|
3月前
|
存储 Java 开发者
揭秘!HashMap底层结构大起底:从数组到链表,再到红黑树,Java性能优化的秘密武器!
【8月更文挑战第24天】HashMap是Java集合框架中的核心组件,以其高效的键值对存储和快速访问能力广受开发者欢迎。在JDK 1.8及以后版本中,HashMap采用了数组+链表+红黑树的混合结构,实现了高性能的同时解决了哈希冲突问题。数组作为基石确保了快速定位;链表则用于处理哈希冲突;而当链表长度达到一定阈值时,通过转换为红黑树进一步提升性能。此外,HashMap还具备动态扩容机制,当负载因子超过预设值时自动扩大容量并重新哈希,确保整体性能。通过对HashMap底层结构的深入了解,我们可以更好地利用其优势解决实际开发中的问题。
108 0
|
3月前
|
存储 Java
【Java集合类面试十】、HashMap中的循环链表是如何产生的?
在多线程环境下,HashMap在扩容时如果发生条件竞争,元素的插入顺序可能形成循环链表,导致死循环。
|
3月前
|
存储 Java
java实现双向链表的增删改查
这篇文章展示了如何在Java中实现双向链表的增加、删除、修改和查询操作,并通过代码示例演示了在双向链表中存储和操作学生信息的过程。
|
3月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
55 0
|
3月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
45 0
下一篇
无影云桌面