(1) 初始化顺序表 SeqList; (2) 输入顺序表的元素(5条记录) (3) 编写PrintList函数,输出顺序表SeqList所有元素; (4) 编写LocateElement函数,查找顺序表元素的位置; (5) 编写InsertElement函数,向顺序表中插入新元素,并调用该函数,在第 3 个元素位置上插入一条学生记录; (6) 编写DeleteElement函数,删除顺序表元素,并调用该函数删除顺序表SeqList的第 1 个元素,输出删除后的线性表;
时间: 2023-05-17 13:05:26 浏览: 83
好的,让我来回答你的问题。
(1) 初始化顺序表 SeqList:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SeqList;
SeqList SeqListInit() {
SeqList L;
L.length = 0;
return L;
}
```
(2) 输入顺序表的元素(5条记录):
```c
void SeqListInput(SeqList *L) {
printf("请输入%d个元素:\n", MAXSIZE);
for (int i = 0; i < MAXSIZE; i++) {
scanf("%d", &L->data[i]);
L->length++;
}
}
```
(3) 编写PrintList函数,输出顺序表SeqList所有元素:
```c
void PrintList(SeqList L) {
printf("顺序表中的元素为:\n");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
```
(4) 编写LocateElement函数,查找顺序表元素的位置:
```c
int LocateElement(SeqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i;
}
}
return -1;
}
```
(5) 编写InsertElement函数,向顺序表中插入新元素,并调用该函数,在第 3 个元素位置上插入一条学生记录:
```c
int InsertElement(SeqList *L, int pos, int e) {
if (pos < 1 || pos > L->length + 1 || L->length == MAXSIZE) {
return 0;
}
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = e;
L->length++;
return 1;
}
void InsertStudent(SeqList *L) {
int pos = 3;
int e = 20210001;
InsertElement(L, pos, e);
}
```
(6) 编写DeleteElement函数,删除顺序表元素,并调用该函数删除顺序表SeqList的第 1 个元素,输出删除后的线性表:
```c
int DeleteElement(SeqList *L, int pos) {
if (pos < 1 || pos > L->length) {
return 0;
}
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
return 1;
}
void DeleteFirst(SeqList *L) {
int pos = 1;
DeleteElement(L, pos);
}
int main() {
SeqList L = SeqListInit();
SeqListInput(&L);
PrintList(L);
int e = 20210001;
int pos = LocateElement(L, e);
if (pos != -1) {
printf("元素%d的位置为%d\n", e, pos + 1);
} else {
printf("元素%d不存在\n", e);
}
InsertStudent(&L);
PrintList(L);
DeleteFirst(&L);
PrintList(L);
return 0;
}
```
阅读全文