线性顺序储存结构的插入与删除

线性储存结构

数据长度与线性表的长度区别

1.数组
数组的长度是存放在线性表的存储空间的长度,存储分配后这个量一般是不变的。
2.线性表
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。

下面看一下顺序存储结构的插入与删除

插入操作

插入算法思路

  • 如果插入位置不合理,抛出异常;
  • 如果线性表长度大于等于数组长度,则抛出异常或动态增加常量;
  • 从后面一个元素开始向前面历到第i个位置,分别将它们都向后移动一个位置;
  • 将要插入元素填入位置i处
  • 表长加1(暂时未加)
	//1.数组,2.位置,3.需要插入的数字
	//插入数据方法
	public static boolean chaRu(int[] shu,int i,int cha)
	{
		
		if(shu[shu.length-1]!=0)//判断是否最后一个数字有没有存储数据
		{
			System.out.println("位置以满");
			return false;
		}
		
		if(i<1 || i>shu.length)//判断i的为位置是否在数组之内
		{
			System.out.println("你选择的位置不在队伍之中");
			return false;
		}
		
		if(i<shu.length)//若插入数据位置表尾
		{
			
			for(int k=shu.length-2;k>=i-1;k--)//循环把需要的插入位置往后输入
			{
				shu[k+1]=shu[k];
			}
		}
		
		shu[i-1]=cha;//腾出来的位置导入需要插入的数字
		
		for(int k=0;k<shu.length;k++)//循环读取数据
		{
			System.out.print(shu[k]);
		}
		System.out.println();
		
		return true;
	}

删除操作

删除算法思路

  • 如果删除位置不合理,抛出异常;
  • 取出删除元素
  • 从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置;
  • 表长减1(暂时未加);
	//1.数组,2.位置,3.反出被删除的数字
	//删除数据的方法
	public static boolean sanChu(int[]shu,int i,int san)
	{
		
		if(shu.length==0)//判断这个线性表是否为空
		{
			System.out.println("数组为空");
			return false;
		}
		
		if(i<0||i>shu.length-1)//判断删除位置是不是正确的
		{
			System.out.println("选择删除的位置不正确");
			return false;
		}
		
		san=shu[i-1];//把删除的值返回来
		
		if(i<shu.length-1)//判断删除的是不是最后一个
		{
			for(int k=i;k<shu.length;k++)
			{
				shu[k-1]=shu[k];//把位置都往前挪一个
			}
			shu[shu.length-1]=0;//最后一个数组的值归零
		}else
		{
			shu[shu.length-1]=0;//最后一个数组的值直接归零
		}
		
		for(int k=0;k<shu.length;k++)//循环读取数据
		{
			System.out.print(shu[k]);
		}
		System.out.println();
		
		return true;
		
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值