#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);
printf("请输入线性表的元素(2 6 9 8),-99结束:\n");
scanf("%d", &i);
j = 1;
while (i != -99) {
INSERT(L, j, i);
j++;
scanf("%d", &i);
}
for (i = 1; i <= LENGTH(L); i++) {
if (GET(L, i) == 9) {
DELETE(L, i);
break;
}
}
printf("删除元素 9 后,线性表长度为:%d\n", LENGTH(L));
printf("\n输入要查找的元素值(2):");
scanf("%d", &i);
printf("该元素在线性表中的位置为:%d\n", LOCATE(L, i));
printf("\n输入要查找的元素值(6):");
scanf("%d", &i);
printf("该元素在线性表中的位置为:%d\n", LOCATE(L, i));
}