(1) 编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。 (2) 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);如果不存在,返回-1。编写主函数测试结果。
时间: 2023-06-03 16:08:01 浏览: 140
对于问题(1)和问题(2),我可以回答。以下是我的回答:
(1)建立顺序表程序的代码:
```
#include <stdio.h>
#define MAXSIZE 100 // 最大容量
typedef struct {
int data[MAXSIZE]; // 存放元素的数组
int length; // 当前表长
} SeqList;
void InitList(SeqList *L) {
L->length = 0;
}
void Insert(SeqList *L, int x) {
if (L->length == MAXSIZE) {
printf("Error: SeqList is full\n");
return;
}
L->data[L->length++] = x;
}
void PrintList(SeqList *L) {
for (int i = 0; i < L->length; i++) {
printf("%d ", L->data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
Insert(&L, 1);
Insert(&L, 2);
Insert(&L, 3);
PrintList(&L);
return 0;
}
```
以上是建立顺序表程序的代码,使用 `SeqList` 结构体存放元素的数组,使用 `InitList` 初始化操作,使用 `Insert` 插入操作,使用 `PrintList` 输出操作。
主函数测试结果:
```
1 2 3
```
(2)顺序表定位操作子函数的代码:
```
#define NotFound -1 // 元素不存在返回值
int Locate(SeqList *L, int x) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == x) {
return i; // 找到了,返回下标
}
}
return NotFound; // 没找到,返回-1
}
```
以上是顺序表定位操作子函数的代码,使用 `Locate` 函数查找顺序表中是否存在指定元素 `x`,如果找到了,返回下标,如果没有找到,返回 `-1`。
主函数测试结果:
```
int main() {
SeqList L;
InitList(&L);
Insert(&L, 1);
Insert(&L, 2);
Insert(&L, 3);
int pos = Locate(&L, 2);
if (pos != NotFound) {
printf("Position of 2: %d\n", pos);
} else {
printf("2 not found.\n");
}
pos = Locate(&L, 4);
if (pos != NotFound) {
printf("Position of 4: %d\n", pos);
} else {
printf("4 not found.\n");
}
return 0;
}
```
输出结果为:
```
Position of 2: 1
4 not found.
```
阅读全文