赞
踩
说完了插入再来删除,所谓删除就是将表中的第i个元素删去使得长度为n的线性表变为长度为n-1的线性表
例:删除顺序表(1,2,3,4,5)中的第3个元素,需要将第四到第五个元素往前移一个位置具体操作如下图所示
先是移动前的顺序表
然后移动4和5,4会将3覆盖也就达到了想要的删除效果
因为移动后原来5的位置会空出来一位,我们要将长度减1,也就是last要减少1
了解了思路,现在我们就可以来编写删除函数辣
- void dellist(seqlist *l,int land)
- {
- //先判断删除的位置是否合法
- if(land<1||land>l->last+1)
- {
- //这里的判断条件和插入的有一些不同,可以看见这里的last是加1的
- //插入的时候合法范围是1到last+2,这里last+2指的是要插入到原表的表尾下一个的位置数(注意是位置数而不是下标值)
- //删除的时候合法范围是 1到last+1,这里为什么不写加2,因为加2表示的是原表表尾下一个的位置数,但我们删除根本不会有这种操作
- //所以只需要到表尾就可以了
- printf("删除的位置有误\n");
- return;
- }
- for(int i=land-1;i<l->last;i++)
- {
- l->elem[i]=l->elem[i+1];
- }
- l->last--;
- }
主函数
- int main()
- {
- int j;
- seqlist *l;
- l=&n;
- int data;
- for(j=0;j<5;j++)
- {
- printf("输入第%d个初始数据:",j+1);
- scanf("%d",&data);
- l->elem[j]=data;
- }
- l->last=j-1;//这里的j-1就是顺序表里最后一个元素的下标值,注意是下标值
- int land;//land是用来代表删除第几个位置,注意land是第几个位置,不是下标值
- printf("输入你要删除的位置\n");
- scanf("%d",&land);
- dellist(l,land);
- printlist(l);
- }
整体代码
- #include <stdio.h>
- #define MAXSIZE 10
- struct seqlist
- {
- int elem[MAXSIZE];//这里我们拿整型数组来作示范
- int last;//last用来记录表中最后一个元素的下标值,注意是下标值,所以我们初始化的时候last从-1开始取
- }n;
- void dellist(seqlist *l,int land)
- {
- //先判断删除的位置是否合法
- if(land<1||land>l->last+1)
- {
- //这里的判断条件和插入的有一些不同,可以看见这里的last是加1的
- //插入的时候合法范围是1到last+2,这里last+2指的是要插入到原表的表尾下一个的位置数(注意是位置数而不是下标值)
- //删除的时候合法范围是 1到last+1,这里为什么不写加2,因为加2表示的是原表表尾下一个的位置数,但我们删除根本不会有这种操作
- //所以只需要到表尾就可以了
- printf("删除的位置有误\n");
- return;
- }
- for(int i=land-1;i<l->last;i++)
- {
- l->elem[i]=l->elem[i+1];
- }
- l->last--;
- }
- //此处为打印函数是用来检验的
- void printlist(seqlist *l)
- {
- for(int i=0;i<=l->last;i++)
- {
- printf("第%d个元素为%d\n",i+1,l->elem[i]);
- }
- }
- int main()
- {
- int j;
- seqlist *l;
- l=&n;
- int data;
- for(j=0;j<5;j++)
- {
- printf("输入第%d个初始数据:",j+1);
- scanf("%d",&data);
- l->elem[j]=data;
- }
- l->last=j-1;//这里的j-1就是顺序表里最后一个元素的下标值,注意是下标值
- int land;//land是用来代表删除第几个位置,注意land是第几个位置,不是下标值
- printf("输入你要删除的位置\n");
- scanf("%d",&land);
- dellist(l,land);
- printlist(l);
- }
进行运行测试
我们输入初始数据1,2,3,4,5
运行结果图为
然后我们输入要删除第几个位置的元素
输入删除第三个位置的元素
发现打印出删除后的结果为1,2,4,5是正确的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。