顺序表的算法实现c++
时间: 2023-09-17 13:02:54 浏览: 95
顺序表是一种线性表的存储结构,它使用一段连续的存储空间来存储数据,并利用元素在物理地址上的相邻关系来表示元素间的逻辑关系。下面是顺序表的算法实现C语言示例:
```c
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100 // 顺序表的最大容量
typedef struct {
int data[MaxSize]; // 存储元素的数组
int length; // 顺序表当前长度
} SeqList;
// 初始化顺序表
void InitSeqList(SeqList *L) {
L->length = 0;
}
// 插入元素
void Insert(SeqList *L, int pos, int elem) {
if(L->length == MaxSize) {
printf("顺序表已满,无法插入元素\n");
return;
}
if(pos < 1 || pos > L->length + 1) {
printf("插入位置不合法\n");
return;
}
for(int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i-1]; // 后移元素
}
L->data[pos-1] = elem;
L->length++;
}
// 删除元素
void Delete(SeqList *L, int pos) {
if(L->length == 0) {
printf("顺序表为空,无法删除元素\n");
return;
}
if(pos < 1 || pos > L->length) {
printf("删除位置不合法\n");
return;
}
for(int i = pos; i < L->length; i++) {
L->data[i-1] = L->data[i]; // 前移元素
}
L->length--;
}
// 查找元素
int Find(SeqList L, int elem) {
for(int i = 0; i < L.length; i++) {
if(L.data[i] == elem) {
return i+1; // 返回元素位置
}
}
return -1; // 若查找失败,则返回-1
}
// 输出顺序表
void PrintSeqList(SeqList L) {
for(int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitSeqList(&L);
// 插入元素
Insert(&L, 1, 10);
Insert(&L, 2, 20);
Insert(&L, 3, 30);
// 输出顺序表
PrintSeqList(L);
// 删除元素
Delete(&L, 2);
// 输出顺序表
PrintSeqList(L);
// 查找元素
int pos = Find(L, 30);
if(pos == -1) {
printf("未找到该元素\n");
} else {
printf("元素30的位置为:%d\n", pos);
}
return 0;
}
```
以上是用C语言实现顺序表的算法。其中包括了初始化顺序表、插入元素、删除元素、查找元素和输出顺序表的操作。示例中演示了初始化顺序表后,插入了三个元素,并分别输出了顺序表的内容。之后删除了位置为2的元素,并再次输出顺序表的内容。最后查找了元素30的位置,若查找成功则输出该元素的位置,若查找失败则输出未找到该元素。
阅读全文