欢迎来交流指点迷津。 非常感谢
#include<stdio.h>
#include<stdlib.h>
typedef int ElmeType;
typedef struct {
ElmeType* Data;
int Maxsize;
int Length;
}SqList;
int PrintList(SqList* S);
int InitSqlist(SqList* S, int n);
int GetElme(SqList* S, int i, ElmeType* e);
int ListInsert(SqList* S, int i, ElmeType e);
int main(){
SqList data;
int n, m;
scanf("%d %d", &n, &m);
InitSqlist(&data, n);
int* data2 = (int*)malloc(sizeof(int) * m);
int x=0;
for (int i = 0; i < n; i++) {
scanf("%d", &x);
ListInsert(&data, i + 1, x);
}
for (int i = 0; i < m; i++) {
scanf("%d", &x);
data2[i] = x;
}
int out;
for (int i = 0; i < m; i++) {
GetElme(&data, data2[i], &out);
printf("%d\n", out);
}
return 0;
}
int InitSqlist(SqList* S, int n) {//生成顺序表
S->Data = (ElmeType*)malloc(sizeof(ElmeType) * n);
S->Length = 0;
S->Maxsize = n;
if (S == NULL) return 0;
return 1;
}
int GetElme(SqList* S, int i, ElmeType* e) {
if (i < S->Length + 1 && i >= 1) {
*e = S->Data[i-1];
return 1;
}
else return 0;
}
int ListInsert(SqList* S, int i, ElmeType e) {
if (i<1 || i>S->Length + 1) return 0;
if (S->Length == S->Maxsize) return -1;
//表长位序所对应数组下标应该-1
for (int j = S->Length - 1; j >= i - 1; j--) {
S->Data[j + 1] = S->Data[j];
}
S->Data[i - 1] = e;
S->Length++;
return 1;
}