题目
随机生成一个具有20个元素的顺序表L,其元素为小于100的非负整数数据,将L中所有小于50的整数放在顺序表的前半部分,大于等于50的整数放在顺序表的后半部分。
代码
#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<math.h>
using namespace std;
#define MaxSize 20
typedef struct {
int data[MaxSize]; //顺序表的数组数据
int length; //顺序表的当前长度
}SqList;//静态顺序表
//初始化顺序表
void InitList(SqList &L) {
L.length = 0;
}
//顺序表插入元素
bool ListInsert(SqList &L, int i, int n) { //i:位序,n:插入数据
//位序不合理
if (i<1 || i>L.length + 1){
return false;
}
//顺序表满
if (L.length == MaxSize) {
return false;
}
int k = L.length + 1;
//若不是在表位插入,将元素后移
if (i != k) {
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1];
}
}
L.data[i - 1] = n; //赋值
L.length++;
return true;
}
int main(){
SqList L;
InitList(L); //初始化
int x, num, q = 0; //x:随机生成的第几个数,q:表中最后一个<50的位序
srand((int)time(NULL));
for (x = 0; x < 20; x++) {
num = rand() % 101; //生成随机数0-100
if (num < 50) {
q = q + 1;
ListInsert(L, q, num);
}
else {
ListInsert(L, q + 1, num);
}
}
for (int a = 0; a < 20; a++) {
cout << L.data[a] << '\t';
}
return 0;
}
问题
1、define 定义出错,导致无法识别
正确定义:#define MaxSize 20
报错情况:C2059、C2143等