在顺序表L中删除值最小的元素
【问题描述】在顺序表L中找到值最小的元素,并将其删除,显示删除前后的顺序表
#include<stdlib.h>
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
#define MAXSIZE 100 //最大长度
typedef struct {
ElemType *elem; //指向数据元素的基地址
int length; //线性表的当前长度度
}SqList;
Status InitList_Sq(SqList &L){ //构造一个空的顺序表L
L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(!L.elem) exit(OVERFLOW); //存储分配失败
L.length=0; //空表长度为0
return OK;
}
int main()
{ //先创建具有n个元素的顺序表
return 0;
}
【输入形式】元素个数
【输出形式】原顺序表和删除后的顺序表。元素之间隔一个空格
【样例输入】
5
6 4 1 9 8
【样例输出】
6 4 1 9 8
6 4 9 8
#include<stdlib.h>
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
#define MAXSIZE 100 //最大长度
typedef struct {
ElemType *elem; //指向数据元素的基地址
int length; //线性表的当前长度度
}SqList;
Status InitList_Sq(SqList &L){ //构造一个空的顺序表L
L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(!L.elem) exit(OVERFLOW); //存储分配失败
L.length=0; //空表长度为0
return OK;
}
int main()
{ //先创建具有n个元素的顺序表
SqList LA;
InitList_Sq(LA);
LA.length=10;
int i;
cin>>LA.length;
for(i=0;i<LA.length;i++)
cin>>LA.elem[i];
for(i=0;i<LA.length;i++)
{cout<<LA.elem[i]<<" ";
}
cout.put('\n');
//found the min number
int min=LA.elem[0];
int minindex=0;
for(i=0;i<LA.length;i++)
if(min>=LA.elem[i])
{min=LA.elem[i];
minindex=i;
}
//delete the min number
int j;
for(j=minindex;j<LA.length;j++)
LA.elem[j]=LA.elem[j+1];
--LA.length;
for(i=0;i<LA.length;i++)
cout<<LA.elem[i]<<" ";
return 0;}