在顺序存储结构上实现线性表的基本操作,包括创建、查找、删除、插入、遍历
时间: 2023-05-16 13:05:17 浏览: 112
在顺序存储结构上实现线性表的基本操作,包括:
1. 创建线性表:可以通过定义一个数组来创建线性表,数组的大小为线性表的最大长度。
2. 查找元素:可以通过遍历数组来查找元素,如果找到了目标元素,返回该元素的下标;如果没有找到,返回-1。
3. 删除元素:可以通过将目标元素后面的所有元素向前移动一个位置来删除元素,同时将线性表的长度减1。
4. 插入元素:可以通过将目标元素后面的所有元素向后移动一个位置来插入元素,同时将线性表的长度加1。
5. 遍历元素:可以通过循环遍历数组来遍历元素,依次输出每个元素的值。
下面是一个示例代码:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 创建线性表
void InitList(SqList *L) {
L->length = 0;
}
// 查找元素
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i;
}
}
return -1;
}
// 删除元素
int ListDelete(SqList *L, int i) {
if (i < 1 || i > L->length) {
return 0;
}
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return 1;
}
// 插入元素
int ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1 || L->length == MAXSIZE) {
return 0;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
return 1;
}
// 遍历元素
void ListTraverse(SqList L) {
for (int i = 0; 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);
ListTraverse(L);
ListDelete(&L, 2);
ListTraverse(L);
int pos = LocateElem(L, 3);
printf("%d\n", pos);
return 0;
}
```
这段代码实现了线性表的基本操作,包括创建、查找、删除、插入、遍历。