天天看点

2021王道数据结构2.2.3_2.1删除具有最小值的元素,并由函数返回被删除元素的值, //空出的位置由最后一个元素填补,若顺序表为空则显示出错误信息并退出运行

**

2.2.3_2.1

**

删除具有最小值的元素,并由函数返回被删除元素的值,

空出的位置由最后一个元素填补,若顺序表为空则显示出错误信息并退出运行

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
	int data[MaxSize];
	int length;
}SqList;
bool InitList(SqList &L){
	int i=0;
	for(i=0;i<MaxSize;i++){
		L.data[i] = 0;
	}	
	L.length = 0;
	return true;
}
//按位序插入 
bool InsertList(SqList &L,int i,int e){
	if(i<1||i>L.length+1){
		return false;
	} 
	if(L.length>=MaxSize){
		return false;
	}
	int j=0;
	for(j=L.length;j>i-1;j--){
		L.data[j] =L.data[j-1];
	}
	L.data[j] = e;
	L.length++;
	return false;
}

void display(SqList L){
	int i=0;
	for(i=0;i<L.length;i++){
		printf("%d ",L.data[i]);
	}
	printf("\n");
}

//2.2.3_2.1删除具有最小值的元素,并由函数返回被删除元素的值,
//空出的位置由最后一个元素填补,若顺序表为空则显示出错误信息并退出运行
bool DeleteMin(SqList &L,int &x){
	if(L.length==0){
		printf("Error\n");
		return false;
		exit(1);
	}
	int locate=0,j=0;
	
	int min = L.data[0];
	for(j=1;j<L.length;j++){//找到最小的值及其坐标 
		if(L.data[j]<min){
			locate = j;//记录最小值坐标 
			x = L.data[j];//记录最小值 
			min = L.data[j];//方便下一轮比较 
		}
	}
	L.data[locate] = L.data[L.length-1];//空出的位置由最后一个元素填补
	L.length--;
	return true;
} 

int main(){
	SqList L;
	InitList(L);
	int i=0;
	for(i=1;i<10;i++){
		InsertList(L,i,i);
	}
//	InsertList(L,6,0);	
	display(L);
	int x=0;
	DeleteMin(L,x);
	printf("最小值的位序为:x = %d\n",x);
	display(L);	
	return 0;
}


           
2021王道数据结构2.2.3_2.1删除具有最小值的元素,并由函数返回被删除元素的值, //空出的位置由最后一个元素填补,若顺序表为空则显示出错误信息并退出运行

继续阅读