zoukankan      html  css  js  c++  java
  • 大话数据结构---顺序存储结构的线性表

             线性表的定义:零个或多个数据元素的有限序列。

    定义的解读:

    1. 首先是由一组数据元素组成,可以基本数据类型,也可以使自定义的类型,
    2. 有限的个数,当然可以是0个,也就是空表呗,
    3. 还有一个特点就是有序

     这么一看线性表抽象出来就和生活中的排队一样,一群小朋友站成一队,每个人都知道自己站在第几个,自己的前面是谁,后面谁,除了排头排位的两个数据,每个数据都有唯一的前驱和后继。

    线性表的分类

                   

    今天先学习一下顺序存储结构,顺序存储结构指的就是用一段地址连续的存储单元依次存储线性表的数据元素;

    这么一看线性表挺像数组的嘛,没错,顺序线性表的实现就是有数组来实现的

    顺序线性表的插入与删除

    插入:有几种情况

    第一种:线性表已经满了,插队失败

    第二种:插入位置不存在,插入失败

    第三种:插在最后,直接到后面站队去

    第四种:想插在中间,会麻烦后面的人都得向后移

    线性表的删除:

    1.就是看看先删除的第几个数是不是存在

    2.存在的,将该元素后面的元素向前移动就行,和在中间插入时的操作相反;

    自己实现ArrayList线性表,只是线性表的基本操作---插入,删除,查看,获取元素

    package com.neuedu.entity;
    
    import java.util.ArrayList;
    import java.util.LinkedList;
    
    /* 
    * 项目名称:JavaSqList 
    * @author:wzc
    * @date 创建时间:2017年9月1日 下午11:08:03
    * @Description:自定义List类
    * @parameter  
    *   */
    public class MyList {
    	private static final int MAXSUM=20;
    	private  int [] date=new int[MAXSUM];
    	private  int length;
    	
    	public MyList() {
    		super();
    		length=0;
    	}
    	//获取线性表长度
    	public int getLength() {
    		return length;
    	}
    	//判断线性表是否为空
    	public boolean isEmpty(){
    		if (length==0) {
    			return true;
    		}
    		else {
    			return  false;
    		}
    	}
    	//获取线性表的第i个数据
    	public  int getIndex(int index){
    		//1.判断索引下标是否合法
    		if (index<0||index>length) {
    			return -1;
    		}
    		//将索引值所对应的数据取出
    		int result=date[index-1];
    		return result;
    	}
    	//向线性表中插入数据,参数:插入的数据,插入的位置
    	public  void InsertList(int  num,int  index){
    		//1.判断线性表是否已经满了
    		if (length==MAXSUM) {
    			System.out.println("线性表已经满了");
    			return;
    		}else if (index<0||index>length+1) {//.判断插入位置是否合法
    			System.out.println("插入位置不合法");
    			return;
    		}else if(index<=length){//插入的位置不是最后一个
    			for(int k=length-1;k>=index-1;k--){
    				date[k+1]=date[k];
    			}
    			
    		}
    		date[index-1]=num;
    		length++;
    		System.out.println("插入成功");
    	}
    	//将线性表中的数据输出
    	public  void  toStringMylist(){
    		if (!isEmpty()) {
    			 for (int i=0;i<length;i++) {
    				System.out.print(date[i]+" ");	
    			 }
    			 System.out.println();
    		}else {
    			System.out.println("null");
    		}
    	}
    	//判断一个数据是否在线性表中,若在返回在第几个位置
    	public int indexOf(int num){
    			for (int i=0;i<length;i++) {
    			   if (date[i]==num) {
    				   return i+1;
    			   }
                }
    		return -1;
    	}
    	//删除数据表中的第i个数据
    	public void deleteNum(int index){
    		if (length==0) {
    			System.out.println("list为空");
    			return;
    		}else if (index<0||index>=length) {
    			System.out.println("下标越界");
    			return;
    		}else {
    			int num=date[index-1];
    			for(int k=index;k<length;k++){
    				date[k-1]=date[k];
    			}
    			length--;
    			System.out.println(num+"已经删除");
    		}
    	}
    	
    	
    	
    
    	
    }
    
  • 相关阅读:
    C/C++产生随机数
    BNUOJ34973Liserious战队
    oracle ebs 12.20 安装成功其过程失败日记及总结(1)
    HDU 2544 最短路 SPFA 邻接表 模板
    GridView编辑删除操作
    Hibernate_10_继承的例子_单表
    String不变性
    Mac在结构quick cocos2d-x编译环境
    Hash散列算法 Time33算法
    南京地图南京全套的卫星地图下载 百度高清卫星地图包括道路、标签信息叠加
  • 原文地址:https://www.cnblogs.com/Actexpler-S/p/7468144.html
Copyright © 2011-2022 走看看