编辑代码

#include <stdio.h>
#pragma warning(disable:4996)
#define DATATYPE1 int
#define MAXSIZE 100

typedef struct {
	DATATYPE1 data[MAXSIZE];
	int len;
} SEQUENLIST;

void INITIATE(SEQUENLIST* L) {
	L->len = 0;
	return;
}

int LENGTH(SEQUENLIST* L) {
	return (L->len);
}

DATATYPE1 GET(SEQUENLIST* L, int i) {
	if (i < 1 || i > L->len)
		return (-1);
	else
		return (L->data[i - 1]);
}

int LOCATE(SEQUENLIST* L, DATATYPE1 x) {
	int k;
	k = 1;
	while (k <= L->len && L->data[k - 1] != x)
		k++;
	if (k <= L->len)
		return (k);
	else
		return (0);
}

void INSERT(SEQUENLIST* L, int i, DATATYPE1 b) {
	int k;
	if (i < 1 || i > L->len + 1 || L->len >= MAXSIZE)
		printf("error");
	else {
		for (k = L->len; k >= i; k--)
			L->data[k] = L->data[k - 1];
		L->data[i - 1] = b;
		L->len++;
	}

}

void DELETE(SEQUENLIST* L, int i) {
	int k;
	if (i < 1 || i > L->len || L->len == 0)
		printf("error");
	else {
		for (k = i + 1; k <= L->len; k++)
			L->data[k - 2] = L->data[k - 1];
		L->len--;
	}
}

int EMPTY(SEQUENLIST* L) {
	if (L->len == 0)
		return (1);
	else
		return (0);
}
int main() {
	SEQUENLIST list, * L;
	int i, j;
	L = &list;
	// 初始化一个空的顺序表
	INITIATE(L);
	// 插入元素 2、6、9、8
	printf("请输入线性表的元素(2 6 9 8),-99结束:\n");
	scanf("%d", &i);
	j = 1;
	while (i != -99) {
		INSERT(L, j, i);
		j++;
		scanf("%d", &i);
	}
	
	// 删除元素 9
	for (i = 1; i <= LENGTH(L); i++) {
		if (GET(L, i) == 9) {
			DELETE(L, i);
			break;
		}
	}
	printf("删除元素 9 后,线性表长度为:%d\n", LENGTH(L));
	// 定位元素 2 的位置
	printf("\n输入要查找的元素值(2):");
	scanf("%d", &i);
	printf("该元素在线性表中的位置为:%d\n", LOCATE(L, i));
	// 定位元素 6 的位置
	printf("\n输入要查找的元素值(6):");
	scanf("%d", &i);
	printf("该元素在线性表中的位置为:%d\n", LOCATE(L, i));
}