初学者,刚好学到线性表,用他的顺序存储结构做的,请大佬指点评价
查看原帖
初学者,刚好学到线性表,用他的顺序存储结构做的,请大佬指点评价
881577
zx142407789楼主2023/3/26 15:17

欢迎来交流指点迷津。 非常感谢

#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;
}
2023/3/26 15:17
加载中...