顺序表 --- 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语言实现的详细介绍。