1 #include<stdio.h>
2 #define MAX 10//表的长度为10
3 typedef int ElementType;
4 int length=0;
5 int value,pos;//记录值和位置
6 typedef struct {
7 ElementType i;
8 int length;
9 ElementType data[MAX];
10 }Sorder;
11 //主要删除最小值的函数代码 ,由此可见删除了最小值1,位于数组0的位置
12 bool Del_Min(Sorder &L,int &value){
13 if(L.length==0)
14 return false;
15 value=L.data[0];
16 for(int i=0;i<=L.length;i++){
17 if(value>L.data[i+1]){
18 value=L.data[i+1];
19 pos=i;
20 }
21 }
22 L.data[pos]=L.data[length-1];
23 return true;
24 }
25 int main(){
26 Sorder L;
27 //循环将0-10是个数存放到数组中
28 for(int i=0;i<MAX;i++){
29 L.data[i]=i+1;
30 L.length++;
31 }
32 Del_Min(L,value);//函数调用,注意是L,value
33 printf("%d",pos);
34 return true;
35 }
王道第二章练习题第一题
题目:从顺序表中删除具有最小值的元素,假设唯一,并由函数返回被删元素的值,空出的位置由最后一个元素填补,
若顺序表为空则显示出错信息并退出运行。
算法思想:本题主要思想就是搜索整个顺序表,查找最小值元素并记住它的位置,pos为标记位置的,主要注意此题用了
参数传参返回(引用传参)返回多个值的办法,函数返回值只能返回一个值,这里注意一下。