第4题:
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错误信息并退出运行。
1)实现删除具有最小值元素的函数。算法的基本设计思想:从前向后遍历线性表用~个变量记录最小值同时用另一个变量记录最小值位置。遍历之后将最小值删除。算法的代码: DataType deleteMin(SeqL 5.st &LDataType &Value) { if(L.n==0) return false; //表空终止操作返回 value=L.data[0]; //假定0号元素的值最小 int ipos=0; for(i=1;i L.n) return false; //表空或者i不合理终止操作 value=L.data[i]; for(int j=i+1;j L.n) return false; //表空或者i不合理终止操作 value=L.data[i]; for(int j=i+1;j L.n) return falSe; //表满或者参数不合理终止操作 for(int J=L.n; J>i;J--) L.data[J]=L.data[J-1]j L.data[i]=value //从第i个位置插入 L.n++; retUrn true ; //insertnoi 4)从顺序表中删除具有给定值X的所有元素。 算法的基本设计思想:从后向前遍历一直找到具有x值的元素然后依次将此后的元素前移。 算法的代码: void deleteValue(SeqLiSt&LDataType value)} int iJ; for(i=L.n-1;i>=0ji--) { //循环寻找具有X值的元素并删除 if(L.data[i]==value) //删除具有x值的元素 { for(J=i+1;J =t) retu.rn false; int ij for(i=L.n-1;i>=0;i--) { //循环寻找在给定范围内的元素并删除它 if(L.data[i]>=s&&L.data[i]<=t) //删除 { for(J=i+1;J =t) return false; int iJku; for(i=0j i =L.n) return false; for(J=i;J L.n) return false for(k=ju=i;k 1)实现删除具有最小值元素的函数。算法的基本设计思想:从前向后遍历线性表,用~个变量记录最小值,同时用另一个变量记录最小值位置。遍历之后将最小值删除。算法的代码:DataTypedeleteMin(SeqL5.st&L,DataType&Value){if(L.n==0)returnfalse;//表空,终止操作返回value=L.data[0];//假定0号元素的值最小inti,pos=0;for(i=1;i L.n)returnfalse;//表空或者i不合理,终止操作value=L.data[i];for(intj=i+1;j L.n)returnfalse;//表空或者i不合理,终止操作value=L.data[i];for(intj=i+1;j L.n)returnfalSe;//表满或者参数不合理,终止操作for(intJ=L.n;J>i;J--)L.data[J]=L.data[J-1]jL.data[i]=value,//从第i个位置插入L.n++;retUrntrue;//insertnoi4)从顺序表中删除具有给定值X的所有元素。算法的基本设计思想:从后向前遍历,一直找到具有x值的元素,然后依次将此后的元素前移。算法的代码:voiddeleteValue(SeqLiSt&L,DataTypevalue)}inti,J;for(i=L.n-1;i>=0ji--){//循环,寻找具有X值的元素并删除if(L.data[i]==value)//删除具有x值的元素{for(J=i+1;J =t)retu.rnfalse;inti,j,for(i=L.n-1;i>=0;i--){//循环,寻找在给定范围内的元素并删除它if(L.data[i]>=s&&L.data[i]<=t)//删除{for(J=i+1;J =t)returnfalse;inti,J,k,u;for(i=0ji =L.n)returnfalse;for(J=i;J L.n)returnfalse,for(k=j,u=i;k