用C语言代码构造一个顺序表,表数据为:33,6,8,10,0,3,2,1。.遍历顺序表(输出顺序表的值,写在函数内) 3.打印出第二个元素的内容(按位置查找) 4.查找内容为“8”的元素的下标(按内容查找) 5.在第三个位置上插入“1”,然后遍历顺序表
时间: 2023-11-27 09:49:06 浏览: 106
下面是C语言代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 20 // 定义顺序表的最大长度
typedef struct {
int data[MAX_SIZE]; // 用数组存储顺序表的数据元素
int length; // 当前顺序表的长度
} SqList;
// 初始化顺序表
void initList(SqList *list) {
list->length = 0; // 初始化顺序表的长度为0
}
// 在顺序表的末尾添加一个元素
void addElement(SqList *list, int elem) {
if (list->length == MAX_SIZE) {
printf("顺序表已满,不能再添加元素!\n");
return;
}
list->data[list->length] = elem;
list->length++;
}
// 遍历顺序表
void traverseList(SqList list) {
printf("顺序表的元素为:");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
// 按位置查找元素
int findByIndex(SqList list, int index) {
if (index < 1 || index > list.length) {
printf("输入的位置不合法!\n");
return -1;
}
return list.data[index-1];
}
// 按内容查找元素
int findByValue(SqList list, int value) {
for (int i = 0; i < list.length; i++) {
if (list.data[i] == value) {
return i+1;
}
}
printf("没有找到值为%d的元素!\n", value);
return -1;
}
// 在指定位置插入一个元素
void insertElement(SqList *list, int index, int elem) {
if (index < 1 || index > list->length+1) {
printf("输入的位置不合法!\n");
return;
}
if (list->length == MAX_SIZE) {
printf("顺序表已满,不能再添加元素!\n");
return;
}
for (int i = list->length; i >= index; i--) {
list->data[i] = list->data[i-1];
}
list->data[index-1] = elem;
list->length++;
}
int main() {
SqList list;
initList(&list);
addElement(&list, 33);
addElement(&list, 6);
addElement(&list, 8);
addElement(&list, 10);
addElement(&list, 0);
addElement(&list, 3);
addElement(&list, 2);
addElement(&list, 1);
traverseList(list); // 遍历顺序表
int elem2 = findByIndex(list, 2);
printf("第二个元素的内容为:%d\n", elem2); // 按位置查找元素
int index8 = findByValue(list, 8);
printf("值为8的元素的下标为:%d\n", index8); // 按内容查找元素
insertElement(&list, 3, 1);
traverseList(list); // 插入元素后遍历顺序表
return 0;
}
```
代码输出结果为:
```
顺序表的元素为:33 6 8 10 0 3 2 1
第二个元素的内容为:6
值为8的元素的下标为:3
顺序表的元素为:33 6 1 8 10 0 3 2 1
```
阅读全文