使用C++语言实现以顺序表作存储结构,实现线性表的创建、插入
时间: 2024-05-19 17:17:46 浏览: 116
、删除、查找和遍历操作的代码怎么写?
以下是使用顺序表作存储结构,实现线性表的创建、插入、删除、查找和遍历操作的C语言代码:
#include <stdio.h>
#include <stdlib.h>
// 定义线性表结构体
typedef struct {
int *data; // 动态分配存储空间
int length; // 当前线性表长度
int size; // 动态分配存储空间的大小
} SeqList;
// 初始化线性表
void InitList(SeqList* L, int maxsize)
{
L->data = (int*)malloc(maxsize * sizeof(int));
L->length = 0;
L->size = maxsize;
}
// 插入元素
int Insert(SeqList* L, int pos, int elem)
{
if (pos < 1 || pos > L->length + 1) {
return 0; // 插入位置不合法
}
if (L->length >= L->size) {
return 0; // 线性表已满,不能插入元素
}
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = elem;
L->length++;
return 1; // 插入成功
}
// 删除元素
int Delete(SeqList* L, int pos)
{
if (pos < 1 || pos > L->length) {
return 0; // 删除位置不合法
}
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
return 1; // 删除成功
}
// 查找元素
int Search(SeqList* L, int elem)
{
for (int i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
return i + 1; // 返回第一个找到的位置
}
}
return 0; // 没找到元素
}
// 遍历线性表
void Traverse(SeqList* L)
{
for (int i = 0; i < L->length; i++) {
printf("%d ", L->data[i]);
}
printf("\n");
}
int main()
{
SeqList L;
InitList(&L, 10); // 初始化线性表,初始最大容量为10
Insert(&L, 1, 10); // 在第1个位置插入10
Insert(&L, 2, 20); // 在第2个位置插入20
Insert(&L, 3, 30); // 在第3个位置插入30
Traverse(&L); // 遍历线性表,输出:10 20 30
Delete(&L, 2); // 删除第2个位置的元素
Traverse(&L); // 遍历线性表,输出:10 30
int pos = Search(&L, 30); // 查找元素30的位置
printf("elem 30 is at position %d\n", pos);
return 0;
}
阅读全文