day5_数据结构

day5_数据结构

  • 思维导图
  • 链表部分代码
    • 按位置进行修改
    • 按值进行修改
    • 链表排序
    • 反转

思维导图

day5_数据结构_第1张图片

链表部分代码

按位置进行修改

//按位置进行修改
int update_val_pos(LinkListPtr L,int pos,datatype e){
	if ( NULL ==L || list_empty(L) || pos <=0 || pos >L->len ){
		printf("无法修改数据\n");
		return 0;
		}
	
	LinkListPtr p = list_search_pos(L,pos);
	p->data = e;
	return 1;
}

按值进行修改

//按值进行修改
int update_val_val(LinkListPtr L,datatype value,datatype e){
	if ( NULL ==L || list_empty(L) ){
		printf("无法修改数据\n");
		return 0;
		}
	int pos = list_find_ByValue(L,value);
	if ( pos<=0 || pos>L->len )
	{
		return 0;
	}
	update_val_pos(L,pos,e);
	return 1;
} 

链表排序

//排序
int list_sort(LinkListPtr L){
		if ( NULL ==L || list_empty(L) ){
		printf("无法排序\n");
		return 0;
		}
		
	LinkListPtr p = L->next;
	int temp = 0;
	for (int i = 0;i<=L->len-1 ;i++ )
	{
		for (int j = 0;j<=L->len-1-i ;j++ )
		{
			if ( list_search_pos(L,j)->data > list_search_pos(L,j+1)->data )
			{
				temp = list_search_pos(L,j)->data;
				list_search_pos(L,j)->data = list_search_pos(L,j+1)->data;
				list_search_pos(L,j+1)->data = temp;
			}
		}
	}
	return 1;
	
}

反转

//反转
int list_reverse(LinkListPtr L){
	if ( NULL ==L || list_empty(L) ){
		printf("无法反转\n");
		return 0;
		}
	LinkListPtr newh = L->next;
	L->next = NULL;

	LinkListPtr p ;

	while (newh!=NULL )
	{	
			p = newh;
			newh = newh->next;	
	
			p->next = L->next;
			L->next = p;	
	}
	return 1;
}

你可能感兴趣的:(作业,数据结构)