a. 以输入整型数据为主,输入后按“?”结束输入。 b. 程序所能表达到的功能为:实现顺序表的创建、查找、插入、删除等功能。 c. 程序运行后,输入数据并执行。
时间: 2024-03-18 22:39:41 浏览: 74
好的,我可以帮您解决这个问题。以下是一个简单的实现顺序表的示例程序:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义最大容量为100
typedef struct {
int data[MAXSIZE]; // 存储数据的数组
int length; // 当前长度
} SqList; // 定义顺序表类型
// 初始化顺序表
void initList(SqList *L) {
L->length = 0;
}
// 插入元素
int listInsert(SqList *L, int pos, int elem) {
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] = elem; // 插入元素
L->length++; // 长度加1
return 1;
}
// 删除元素
int listDelete(SqList *L, int pos) {
if (pos < 1 || pos > L->length) {
return 0; // 删除位置不合法
}
for (int i = pos - 1; i < L->length - 1; i++) {
L->data[i] = L->data[i+1]; // 将删除位置后的元素前移
}
L->length--; // 长度减1
return 1;
}
// 查找元素
int listSearch(SqList *L, int elem) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
return i+1; // 返回元素位置
}
}
return 0; // 未找到元素
}
int main() {
SqList L;
initList(&L); // 初始化顺序表
printf("请输入整型数据,以问号结束:\n");
int num;
while (scanf("%d", &num) != EOF && getchar() != '?') {
listInsert(&L, L.length+1, num); // 依次插入数据
}
printf("顺序表中的元素为:");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]); // 打印顺序表中的元素
}
printf("\n请输入要查找的元素:");
scanf("%d", &num);
int pos = listSearch(&L, num);
if (pos) {
printf("元素%d在顺序表中的位置为%d\n", num, pos);
} else {
printf("未找到元素%d\n", num);
}
printf("请输入要删除的元素所在的位置:");
scanf("%d", &pos);
if (listDelete(&L, pos)) {
printf("删除成功\n");
} else {
printf("删除失败\n");
}
printf("删除后顺序表中的元素为:");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]); // 打印删除后的顺序表中的元素
}
return 0;
}
```
您可以按照程序提示,输入整型数据,以问号结束。程序将会创建一个顺序表,并依次插入输入的数据。之后,程序会提示您输入要查找的元素和要删除的元素所在的位置,并执行对应的操作。最后,程序会打印删除后的顺序表中的元素。
阅读全文