day3-数据结构

本文介绍了顺序表的几个基本操作,包括按元素删除、在元素后继位置插入、使用冒泡排序进行排序,以及如何合并两个顺序表。同时,还提供了释放顺序表空间的方法。
摘要由CSDN通过智能技术生成

1.顺序表按元素删除

2.顺序表按元素插入其后继位置

3.顺序表排序

4.顺序表合并

5.顺序表空间释放

//顺序表按元素删除
int delete_data(seqlist list,datatype e)
{
	int flag = search_data(list,e);
	if(flag == -1)
	{
		printf("删除失败\n");
		return -1;
	}
	delete_sub(list,flag);
	return 0;
}	

//顺序表按元素插入其后继位置
int insert_after_sub(seqlist list,datatype e, datatype key)
{
	int flag = search_data(list,e);
	//元素不存在,或满
	if(flag == -1|| full_seqlist(list))
	{
		printf("插入失败\n");
		return -1;
	}
	//调用按下标插入
	insert_sub(list,flag+1,key);
	return 0;
}

//顺序表排序
int sort(seqlist list)
{
	if(list == NULL || empty_seqlist(list))
	{
		printf("排序失败\n");
		return -1;
	}
	//冒泡排序
	for(int i=0;i < list->len-1;i++)
	{
		int count = 0;
		for(int j=0;j<list->len-1-i;j++)
		{
			if(list->data[j] > list->data[j+1])
			{	
				datatype temp = list->data[j];
				list->data[j] = list->data[j+1];
				list->data[j+1] = temp;
				count++;
			}
		}
		if(count == 0)
		{
			break;
		}
	}
	return 0;
}

//顺序表空间释放
seqlist free_space(seqlist list)
{
	if(list == NULL)
	{
		return NULL;
	}
	free(list);
	return list;
}  

//顺序表合并
void combine(Seqlist *la,Seqlist *lb,Seqlist *lc)
{
	int p = 0,q = 0, r = 0;
	while(p< la->len && q<lb->len)
	{
		if(la->data[p] <= lb->data[q])
		{	
			lc->data[r] = la->data[p];
			r++;p++;
			lc->len++;
		}	
		else
		{
			lc->data[r] = lb->data[q];
			r++;q++;
			lc->len++;
		}
	}
	
	while(p < la->len) //la剩余元素放入lc中
	{
		lc->data[r] = la->data[p];
		r++;p++;
		lc->len++;
	}
	while(q< lb->len)  //lb剩余元素放入lc
	{
		lc->data[r] = lb->data[q];
		r++;q++;
		lc->len++;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值