day4-数据结构

1.单向链表按位置修改

2.单向链表按元素删除

3.单向链表按元素修改

4.单向链表在给定元素前面插入

5.单向链表的排序

6.单向链表空间释放

//按位置修改
int update_data(linklist L, int pos, datatype e)
{
	if(L == NULL || L->next == NULL || pos < 1 || pos >L->len)
	{
		return -1;
	}

	linklist p = L;
	for(int i=0;i<pos;i++)
	{
		p = p->next;
	}
	p->data = e;
	return 0;
}

//按元素修改
int update_data(linklist L,datatype e,datatype k)
{
	//先找位置,根据位置修改
	int pos = search_data(L,e);
	if(pos == -1)
	{
		return -1;
	}
	update_data(L,pos,ley);
	return 0;
}


//按元素删除
int delete_data(linklist L,datatype e)
{
	//查找该元素所在位置
	int pos = search_data(L,e);
	if(pos == -1)
	{
		return -1;
	}
	//按位置删除
	delete_pos(L,pos);
	return 0;
}

//给定元素前插入
int insert_data(linklist L,datatype f,datatype e)
{
	//查找该元素位置
	int pos = search_data(L,f);
	if(pos == -1)
	{
		return -1;
	}
	insert_pos(L,pos,e);
	return 0;
}

//排序
void sort(linklist L)
{
	if(L == NULL ||L->next == NULL)
	{
		printf("排序失败\n");
		return;
	}

	datatype temp;
	for(int i=0;i< L->len-1;i++)
	{
		linklist p = L->next;
		int count = 0;
		for(int j=0;j< L->len-1-i;j++)
		{
			if(p->data > p->next->data)
			{
				temp = p->data;
				p->data = p->next->data;
				p->next->data = temp;
				count++;
			}
		     p = p->next;
		}
		if(count == 0)
		{	
			break;
		}
	}
}

linklist free_space(linklist L)//空间释放
{
	if(L == NULL)
	{
		return NULL;
	}

	//循环释放
	linklist p = L->next;
	while(p != NULL)
	{
		linklist q = p;
		p = p->next;
		free(q);
		q = NULL;
	}
	free(L);
	L = NULL;
	return NULL;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值