• java实现顺序链表


    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]+"	");
    		}
    		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));
    		
    	}
    
    }
    

      

  • 相关阅读:
    教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题)
    ArcGIS API for Silverlight 使用GeometryService进行河流网格划分(三)
    ArcGIS Server 10.1发布要素服务时遇到的数据库注册问题总结 (二)
    使用ArcGIS API for Silverlight + Visifire绘制地图统计图
    使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
    报个道
    Cgroups
    docker的文件系统
    go实现http服务
    linux调度器原理
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/4643664.html
Copyright © 2020-2023  润新知