编写一个程序实现顺序表的各种基本运算
时间: 2023-04-14 11:02:51 浏览: 141
顺序表是一种线性结构,可以用数组来实现。实现顺序表的基本运算包括以下几个方面:
1. 初始化操作:创建一个空的顺序表,即分配一定大小的数组空间,并将表长设置为。
2. 插入操作:在顺序表的任意位置插入一个元素,需要将插入位置后的元素依次后移,然后将新元素插入到指定位置。
3. 删除操作:删除顺序表中的任意位置的元素,需要将删除位置后的元素依次前移,然后将表长减1。
4. 查找操作:查找顺序表中指定位置的元素,可以直接通过下标访问。
5. 修改操作:修改顺序表中指定位置的元素,可以直接通过下标访问并修改。
6. 遍历操作:遍历顺序表中的所有元素,可以使用循环结构依次访问每个元素。
下面是一个简单的示例代码,实现了上述基本运算:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
int ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1 || L->length == MAXSIZE) {
return ;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
return 1;
}
int ListDelete(SqList *L, int i) {
if (i < 1 || i > L->length) {
return ;
}
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return 1;
}
int GetElem(SqList L, int i) {
if (i < 1 || i > L.length) {
return ;
}
return L.data[i - 1];
}
int LocateElem(SqList L, int e) {
for (int i = ; i < L.length; i++) {
if (L.data[i] == e) {
return i + 1;
}
}
return ;
}
void PrintList(SqList L) {
for (int i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L);
ListInsert(&L, 1, 1);
ListInsert(&L, 2, 2);
ListInsert(&L, 3, 3);
ListInsert(&L, 4, 4);
PrintList(L);
ListDelete(&L, 3);
PrintList(L);
printf("%d\n", GetElem(L, 2));
printf("%d\n", LocateElem(L, 4));
return ;
}
```