#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef int ElemType;
typedef struct {
ElemType data[MaxSize]; /* 存放数据元素 */
int length; /* 线性表长度 */
} SqList;
/* 初始化 */
void InitList(SqList *L) { L->length = 0; }
/* 在位置i(1≤i≤n+1)插入元素e */
int ListInsert(SqList *L, int i, ElemType e) {
int j;
if (i < 1 || i > L->length + 1 || L->length >= MaxSize) return 0;
for (j = L->length; j >= i; j--) L->data[j] = L->data[j-1];
L->data[i-1] = e; L->length++; return 1;
}
/* 删除位置i的元素并由e返回 */
int ListDelete(SqList *L, int i, ElemType *e) {
int j;
if (i < 1 || i > L->length) return 0;
*e = L->data[i-1];
for (j = i; j < L->length; j++) L->data[j-1] = L->data[j];
L->length--; return 1;
}
/* 按位取值 */
int GetElem(SqList L, int i, ElemType *e) {
if (i < 1 || i > L.length) return 0;
*e = L.data[i-1]; return 1;
}
/* 按值查找,返回其逻辑位置 */
int LocateElem(SqList L, ElemType e) {
int i;
for (i = 0; i < L.length; i++)
if (L.data[i] == e) return i + 1;
return 0;
}
/* 遍历输出 */
void DispList(SqList L) {
int i;
for (i
= 0; i
< L.
length; i
++) printf("%d ", L.
data[i
]); }
int main() {
SqList L; ElemType e;
int a[] = {1, 2, 3, 4, 5}, i;
InitList(&L);
for (i = 0; i < 5; i++) ListInsert(&L, i+1, a[i]);
printf("初始顺序表: "); DispList
(L
); ListInsert(&L, 3, 100);
printf("在位置3插入100后: "); DispList
(L
); ListDelete(&L, 3, &e);
printf("删除第3个元素(%d)后: ", e
); DispList
(L
); GetElem
(L
, 2, &e
); printf("第2个元素=%d\n", e
); printf("元素3的位置=%d\n", LocateElem
(L
, 3)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBNYXhTaXplIDEwMAp0eXBlZGVmIGludCBFbGVtVHlwZTsKdHlwZWRlZiBzdHJ1Y3QgewogICAgRWxlbVR5cGUgZGF0YVtNYXhTaXplXTsgICAvKiDlrZjmlL7mlbDmja7lhYPntKAgKi8KICAgIGludCBsZW5ndGg7ICAgICAgICAgICAgICAgLyog57q/5oCn6KGo6ZW/5bqmICovCn0gU3FMaXN0OwoKLyog5Yid5aeL5YyWICovCnZvaWQgSW5pdExpc3QoU3FMaXN0ICpMKSB7IEwtPmxlbmd0aCA9IDA7IH0KCi8qIOWcqOS9jee9rmkoMeKJpGniiaRuKzEp5o+S5YWl5YWD57SgZSAqLwppbnQgTGlzdEluc2VydChTcUxpc3QgKkwsIGludCBpLCBFbGVtVHlwZSBlKSB7CiAgICBpbnQgajsKICAgIGlmIChpIDwgMSB8fCBpID4gTC0+bGVuZ3RoICsgMSB8fCBMLT5sZW5ndGggPj0gTWF4U2l6ZSkgcmV0dXJuIDA7CiAgICBmb3IgKGogPSBMLT5sZW5ndGg7IGogPj0gaTsgai0tKSBMLT5kYXRhW2pdID0gTC0+ZGF0YVtqLTFdOwogICAgTC0+ZGF0YVtpLTFdID0gZTsgTC0+bGVuZ3RoKys7IHJldHVybiAxOwp9CgovKiDliKDpmaTkvY3nva5p55qE5YWD57Sg5bm255SxZei/lOWbniAqLwppbnQgTGlzdERlbGV0ZShTcUxpc3QgKkwsIGludCBpLCBFbGVtVHlwZSAqZSkgewogICAgaW50IGo7CiAgICBpZiAoaSA8IDEgfHwgaSA+IEwtPmxlbmd0aCkgcmV0dXJuIDA7CiAgICAqZSA9IEwtPmRhdGFbaS0xXTsKICAgIGZvciAoaiA9IGk7IGogPCBMLT5sZW5ndGg7IGorKykgTC0+ZGF0YVtqLTFdID0gTC0+ZGF0YVtqXTsKICAgIEwtPmxlbmd0aC0tOyByZXR1cm4gMTsKfQoKLyog5oyJ5L2N5Y+W5YC8ICovCmludCBHZXRFbGVtKFNxTGlzdCBMLCBpbnQgaSwgRWxlbVR5cGUgKmUpIHsKICAgIGlmIChpIDwgMSB8fCBpID4gTC5sZW5ndGgpIHJldHVybiAwOwogICAgKmUgPSBMLmRhdGFbaS0xXTsgcmV0dXJuIDE7Cn0KCi8qIOaMieWAvOafpeaJvu+8jOi/lOWbnuWFtumAu+i+keS9jee9riAqLwppbnQgTG9jYXRlRWxlbShTcUxpc3QgTCwgRWxlbVR5cGUgZSkgewogICAgaW50IGk7CiAgICBmb3IgKGkgPSAwOyBpIDwgTC5sZW5ndGg7IGkrKykKICAgICAgICBpZiAoTC5kYXRhW2ldID09IGUpIHJldHVybiBpICsgMTsKICAgIHJldHVybiAwOwp9CgovKiDpgY3ljobovpPlh7ogKi8Kdm9pZCBEaXNwTGlzdChTcUxpc3QgTCkgewogICAgaW50IGk7CiAgICBmb3IgKGkgPSAwOyBpIDwgTC5sZW5ndGg7IGkrKykgcHJpbnRmKCIlZCAiLCBMLmRhdGFbaV0pOwogICAgcHJpbnRmKCJcbiIpOwp9CgppbnQgbWFpbigpIHsKICAgIFNxTGlzdCBMOyBFbGVtVHlwZSBlOwogICAgaW50IGFbXSA9IHsxLCAyLCAzLCA0LCA1fSwgaTsKICAgIEluaXRMaXN0KCZMKTsKICAgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspIExpc3RJbnNlcnQoJkwsIGkrMSwgYVtpXSk7CiAgICBwcmludGYoIuWIneWni+mhuuW6j+ihqDogICIpOyBEaXNwTGlzdChMKTsKICAgIExpc3RJbnNlcnQoJkwsIDMsIDEwMCk7CiAgICBwcmludGYoIuWcqOS9jee9rjPmj5LlhaUxMDDlkI46ICIpOyBEaXNwTGlzdChMKTsKICAgIExpc3REZWxldGUoJkwsIDMsICZlKTsKICAgIHByaW50Zigi5Yig6Zmk56ysM+S4quWFg+e0oCglZCnlkI46ICIsIGUpOyBEaXNwTGlzdChMKTsKICAgIEdldEVsZW0oTCwgMiwgJmUpOyBwcmludGYoIuesrDLkuKrlhYPntKA9JWRcbiIsIGUpOwogICAgcHJpbnRmKCLlhYPntKAz55qE5L2N572uPSVkXG4iLCBMb2NhdGVFbGVtKEwsIDMpKTsKICAgIHJldHVybiAwOwp9Cg==