顺序表实现插入删除

顺序表的插入删除操作

//1.定义一个顺序表
方法1:固定长度
#define maxSize 50 
typedef struct{
	ElemType data[maxSize];//顺序表的元素,其中ElemType为数据类型,这里没有指定,用ElemType代指
	int length;//顺序表的当前长度
}Sqlist;//顺序表的类型定义

方法2 :可变长度
#define InitSize 100 
typedef struct{
	ElemType *data;//指示动态分配数组的指针
	int length,Maxsize;//顺序表的当前个数和最大容量
}Sqlist;//顺序表的类型定义

动态分配的语法:
L.data = (ElemType *)malloc(sizeof(Elemtype)*InitSize);

插入的实现:
//代码实现思想:
//			1.首先判断i插入的位置是否合理,若小于1或者大于L.length+1则表示加入的位置有无
//			2.要想插入,首先判断表的长度:若表的长度达到了Maxsize则表示表已经存满,不能再加入新元素
//			3.当以上情况不存在时,则可以进行插入元素:首先需要将要插入位置后面的所有元素向后移动1位,把第i个位置腾出,进行添加,即可。	
//			实现代码如下:
bool ListInsert(Sqlist &L,int i,ElemType e){//在顺序表L中的第i个位置插入元素e,注意&表示引用类型,简单的说就是添加数据后直接改变L
		if(i < 1 || i > L.length + 1){
				return false;//在实际数组中添加的位置是data[i - 1]
			}
		if(L.length >= Maxsize){
				return falae;//存储空间已经满了返回false
			}
		for(int j = L.length; j >= i; j--){//获取顺序表本来的长度,再进行遍历
				L.data[j] = L.data[j - 1];//将大于等于第i位的数往后面移动一位
			}
		L.data[i - 1] = e;//将数据e添加到第i的位置,注意再data数组中第i个位置的实际位置为i-1
		L.length++;//添加了元素,数组的长度增加1
		return true;
}
成功实现顺序表的添加
删除表中数据
//思想方法:
//		1.判断删除i的位置是否合法,不合法则删除失败
//		2.将要删除元素后面的元素全部向前移动一位,即表示删除成功
//代码实现:
bool ListDelete(Sqlist &L,int i, ElemType &e){
	if(i < 1 || i > L.length + 1){
			return false;
		}
	e = L.data[i - 1];//将要删除的元素赋值给e
	for(int j = i; j < L.length; j++){
			L.data[j - 1] = L.data[j];	//将第i位后面的元素向前移动一位
		}
	L.length--;//删除元素后长度减1
	return true;
}		

顺序表成功实现删除

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值