/*
时间:2017年7月2日10:49:39
功能:从顺序表中删除具有最小值的元素并将最后元素放于被删除元素的位置,由函数返回被删元素的值
*/
#include "stdio.h"
#include "string.h"
#include"stdlib.h"
#define maxSize 15 //显式地定义表的长度
typedef int DataType; //定义表元素的数据类型
typedef struct //顺序表的定义
{
DataType data[maxSize]; //静态分配存储表元素的一维数组
int n; //实际表元素个数
}SeqList;
int deleteMin(SeqList*, DataType* ); //函数声明
int main()
{
SeqList L = {{11,21,3,41,31,21,4,6,8,7},10}; //顺序表元素初始化
DataType x;
deleteMin(&L, &x); //因为x的值会改变,故传入调用函数的是地址
printf("被删除的元素的值为:%d\n", x);
printf("完成相应操作后的数组形式:\n");
for(int i = 0; i < 9; i++)
printf("%d\t",L.data[i]); //此处L是结构体普通变量
printf("\n");
return 0;
}
int deleteMin(SeqList *L, DataType *x) //此处用指针接住地址变量的值
{
if(L->n == 0)
{
printf("表空不能删除!\n");
return 0;
}
int i, pos = 0; //假定0号元素的值最小
for(i = 2; i <= L->n; i++) //循环,寻找具有最小值的元素,此处的L是结构体指针变量
if(L->data[i-1] < L->data[pos]) //pos记忆当前具有最小值元素的位置
pos = i-1;
*x = L->data[pos];// L->n--; L->data[pos] = L->data[L->n];
return 1; //如果return的返回值返回到调用函数处,返回的值需要用一个变量进行存储
}
/*
总结:顺序表中的所有元素既可以顺序访问也可以随机访问
在VC++6.0中显示的结果是:
——————————————————————————————————
被删除的元素的值为:3
完成相应操作后的数组形式:
11 21 7 41 31 21 4 6 8
——————————————————————————————————
*/
原文:http://www.cnblogs.com/wxt19941024/p/7105407.html