当前位置:实例文章 » 其他实例» [文章]顺序表 --- C语言实现

顺序表 --- C语言实现

发布人:shili8 发布时间:2024-11-18 18:08 阅读次数:0

**顺序表的定义和基本操作**

顺序表是一种线性数据结构,元素按照一定的顺序排列在内存中。它是C语言中最常用的线性数据结构之一。

###1. 顺序表的定义

ctypedef struct {
 int data[100]; // 数组长度为100 int length; // 表长} SeqList;


上述代码定义了一个顺序表的结构体,包含两个成员变量:`data`和`length`。其中,`data`是用于存储元素的数组,`length`表示当前表中的元素个数。

###2. 顺序表的基本操作顺序表支持以下基本操作:

* **初始化**:将表长设置为0。
* **插入**:在指定位置插入一个新元素。
* **删除**:从指定位置删除一个元素。
* **查找**:找到指定元素的位置。
* **遍历**:输出所有元素。

###3. 初始化
cvoid init(SeqList *L) {
 L->length =0;
}


上述代码定义了一个函数,用于初始化顺序表。它将表长设置为0。

###4. 插入
cvoid insert(SeqList *L, int i, int x) {
 if (i < 1 || i > L->length +1) {
 printf("插入位置错误
");
 return;
 }
 for (int j = L->length; j >= i; --j) {
 L->data[j] = L->data[j -1];
 }
 L->data[i -1] = x;
 ++L->length;
}


上述代码定义了一个函数,用于在指定位置插入一个新元素。它首先检查插入位置是否合法,如果不合法则输出错误信息并返回。如果合法,则从表长到插入位置的所有元素向后移动一位,并将新元素插入到指定位置。

###5. 删除
cvoid delete(SeqList *L, int i) {
 if (i < 1 || i > L->length) {
 printf("删除位置错误
");
 return;
 }
 for (int j = i; j < L->length; ++j) {
 L->data[j -1] = L->data[j];
 }
 --L->length;
}


上述代码定义了一个函数,用于从指定位置删除一个元素。它首先检查删除位置是否合法,如果不合法则输出错误信息并返回。如果合法,则从删除位置到表长的所有元素向前移动一位,并将表长减1。

###6. 查找
cint search(SeqList *L, int x) {
 for (int i =0; i < L->length; ++i) {
 if (L->data[i] == x) {
 return i +1;
 }
 }
 return -1;
}


上述代码定义了一个函数,用于找到指定元素的位置。它遍历表中的所有元素,如果找到则返回元素的位置,如果找不到则返回-1。

###7. 遍历
cvoid traverse(SeqList *L) {
 for (int i =0; i < L->length; ++i) {
 printf("%d ", L->data[i]);
 }
 printf("
");
}


上述代码定义了一个函数,用于输出所有元素。它遍历表中的所有元素,并将每个元素输出到控制台。

###8. 主函数
cint main() {
 SeqList L;
 init(&L);
 insert(&L,1,10);
 insert(&L,2,20);
 insert(&L,3,30);
 traverse(&L); // 输出:102030 delete(&L,2);
 traverse(&L); // 输出:1030 int pos = search(&L,20);
 if (pos != -1) {
 printf("元素%d找到
", pos);
 } else {
 printf("元素未找到
");
 }
 return0;
}


上述代码定义了一个主函数,用于测试顺序表的基本操作。它首先初始化顺序表,然后插入三个元素,并输出所有元素。接着,它删除第二个元素,并再次输出所有元素。最后,它查找第三个元素,并输出结果。

以上就是关于顺序表的C语言实现的详细介绍。

相关标签:
其他信息

其他资源

Top