天天看點

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删除具有最小值的元素,并由函數傳回被删除元素的值, //空出的位置由最後一個元素填補,若順序表為空則顯示出錯誤資訊并退出運作

繼續閱讀