PIPIOJ—1213: 顺序表的删除

题目链接

戳我

题目描述

从顺序表L中删除具有最小值的元素(假设唯一)并友函数返回被删元素的值。空出的元素由最后一个元素填补。

输入

输入包含一个整数n代表顺序表L长度。
接下来包含n个整数,代表顺序表L中的元素。

输出

若顺序表为空,输出 "error".
若不为空,输出最小元素的值并输出删除最小值之后的顺序表。

样例输入

3
1 2 3

样例输出

1
3 2

注意点

这里要注意审题,删除最小元素,并把最后一个元素放到删除元素的位置上,
并不需要删除元素后,移动后续元素。

C++参考解答

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 

#define MAXSIZE 50
typedef int ElemType;

typedef struct {
    ElemType data[MAXSIZE];
    int length;
}SqList;

//初始化顺序表
void InitList(SqList& L) {
    L.length =0;
    memset(L.data, 0, sizeof(ElemType));
}

//打印顺序表
void PrintList(SqList L) {
    int i;
    for (i = 0; i < L.length; i++) {
        printf("%d ", L.data[i]);
    }
    printf("\n");
}

//删除顺序表元素
bool ListDelete(SqList& L, int i) {
    if (i<0 || i>L.length) {
        return false;
    }
    if (L.length == 0) {
        return false;
    }
    //不需要移动元素
    //int j;
    /*for(j=i;j

你可能感兴趣的:(数据结构和算法)