#include#include #define MaxSize 100 typedef struct{ int data[MaxSize]; int length; }SqList; int FindMinPositiveValue(SqList L){ int MaxValue = L.data[0]; for (int i = 1; i < L.length; ++i) {//已经假定最小值是L.data[0]了,所以可以直接从i = 1 开始比较 if(MaxValue < L.data[i]) MaxValue = L.data[i]; } //申请 MaxValue + 2 个空间才能足够用下标表示 1 到 MaxValue + 1 这 MaxValue + 1 个数 int* Flag = (int*)malloc(sizeof(int) * (MaxValue + 2)); //初始化数组全置为 0 for(int i = 0; i < MaxValue + 2; i++){ Flag[i] = 0; } Flag[0] = 1;//题目要求是正整数,所以 0 这边直接置 1 for(int i = 0; i < L.length; i++){ if(L.data[i] > 0)//小于等于 0 的直接忽略 Flag[L.data[i]] = 1; } for (int i = 0; i < MaxValue + 2; ++i) { if(Flag[i] == 0) return i; } return -1; } //以下用于测试 void InitList(SqList &L){ for (int i = 0; i < MaxSize; ++i) { L.data[i] = 0; } L.length = 0; } void PrintList(SqList L){ for (int i = 0; i < L.length; ++i) { printf("%d ",L.data[i]); } printf("n"); } int main(){ SqList L = {{-5,1,3,4}, 4}; PrintList(L); printf("%d",FindMinPositiveValue(L)); return 0; }



