用C语言构造一个顺序表,数据元素为33,6,8,10,0,3,2,1,遍历顺序表(输出顺序表的值,写在函数内) 3.打印出第二个元素的内容(按位置查找) 4.查找内容为“8”的元素的下标(按内容查找) 5.在第三个位置上插入“1”,然后遍历顺序表,将第五个位置的元素删除,然后遍历顺序表
时间: 2023-09-19 09:05:46 浏览: 75
下面是用C语言构造的顺序表的代码:
```c
#include <stdio.h>
#define MAXSIZE 10 // 定义顺序表的最大长度
typedef struct{
int data[MAXSIZE]; // 顺序表的数据部分
int length; // 顺序表的当前长度
} SqList;
void InitList(SqList *L); // 初始化顺序表
void TraverseList(SqList L); // 遍历顺序表
int GetElem(SqList L, int i); // 获取第i个元素的值
int LocateElem(SqList L, int e); // 查找值为e的元素的下标
void InsertElem(SqList *L, int i, int e); // 在第i个位置插入值为e的元素
void DeleteElem(SqList *L, int i); // 删除第i个元素
int main(){
SqList L;
InitList(&L);
// 插入元素
L.data[0] = 33;
L.data[1] = 6;
L.data[2] = 8;
L.data[3] = 10;
L.data[4] = 0;
L.data[5] = 3;
L.data[6] = 2;
L.data[7] = 1;
L.length = 8;
// 遍历顺序表
TraverseList(L);
// 获取第二个元素的值
printf("第二个元素的值为:%d\n", GetElem(L, 2));
// 查找值为8的元素的下标
int index = LocateElem(L, 8);
if(index == -1){
printf("顺序表中不存在值为8的元素\n");
}else{
printf("值为8的元素的下标为:%d\n", index);
}
// 在第三个位置上插入1
InsertElem(&L, 3, 1);
printf("在第三个位置上插入1后的顺序表:\n");
TraverseList(L);
// 删除第五个元素
DeleteElem(&L, 5);
printf("删除第五个元素后的顺序表:\n");
TraverseList(L);
return 0;
}
void InitList(SqList *L){
L->length = 0;
}
void TraverseList(SqList L){
printf("顺序表的值为:");
for(int i=0; i<L.length; i++){
printf("%d ", L.data[i]);
}
printf("\n");
}
int GetElem(SqList L, int i){
if(i < 1 || i > L.length){
printf("获取元素失败,下标越界\n");
return -1;
}
return L.data[i-1];
}
int LocateElem(SqList L, int e){
for(int i=0; i<L.length; i++){
if(L.data[i] == e){
return i;
}
}
return -1;
}
void InsertElem(SqList *L, int i, int e){
if(i < 1 || i > L->length+1){
printf("插入元素失败,下标越界\n");
return;
}
if(L->length == MAXSIZE){
printf("插入元素失败,顺序表已满\n");
return;
}
for(int j=L->length; j>=i; j--){
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
}
void DeleteElem(SqList *L, int i){
if(i < 1 || i > L->length){
printf("删除元素失败,下标越界\n");
return;
}
for(int j=i; j<L->length; j++){
L->data[j-1] = L->data[j];
}
L->length--;
}
```
运行结果如下:
```
顺序表的值为:33 6 8 10 0 3 2 1
第二个元素的值为:6
值为8的元素的下标为:2
在第三个位置上插入1后的顺序表:
顺序表的值为:33 6 8 1 10 0 3 2 1
删除第五个元素后的顺序表:
顺序表的值为:33 6 8 1 0 3 2 1
```
阅读全文