当前位置:实例文章 » 其他实例» [文章]【C语言14】C语言实现顺序表(这可能是CSDN有史以来讲解最详细的顺序表)

【C语言14】C语言实现顺序表(这可能是CSDN有史以来讲解最详细的顺序表)

发布人:shili8 发布时间:2025-01-15 21:50 阅读次数:0

**C语言实现顺序表**

顺序表是一种常见的数据结构,用于存储一组元素的集合。它是通过在内存中连续分配一段空间来实现的,每个元素占据一个连续的位置。在本文中,我们将详细介绍如何使用C语言实现顺序表。

**1. 顺序表的定义**

顺序表是一种线性数据结构,所有元素都按照一定的顺序排列在一起。每个元素都有一个唯一的索引(下标),可以通过该索引来访问和操作元素。

**2. 顺序表的基本操作**

顺序表支持以下基本操作:

* **插入**:将新元素插入到指定位置。
* **删除**:从指定位置删除元素。
* **查找**:根据关键字找到对应的元素。
* **排序**:按一定规则对元素进行排序。

**3. 顺序表的实现**

下面是C语言中顺序表的基本实现:

c#include <stdio.h>
#include <stdlib.h>

// 定义顺序表结构体typedef struct {
 int *data; // 元素数组 int size; // 当前元素数量 int capacity; // 最大容量} SeqList;

// 初始化顺序表void init(SeqList *list, int capacity) {
 list->size =0;
 list->capacity = capacity;
 list->data = (int *)malloc(sizeof(int) * capacity);
}

// 插入元素void insert(SeqList *list, int index, int value) {
 if (index < 0 || index > list->size) {
 printf("插入位置错误
");
 return;
 }

 // 扩容 if (list->size == list->capacity) {
 list->capacity *=2;
 list->data = (int *)realloc(list->data, sizeof(int) * list->capacity);
 }

 for (int i = list->size; i > index; --i) {
 list->data[i] = list->data[i -1];
 }
 list->data[index] = value;
 ++list->size;
}

// 删除元素void delete(SeqList *list, int index) {
 if (index < 0 || index >= list->size) {
 printf("删除位置错误
");
 return;
 }

 for (int i = index; i < list->size -1; ++i) {
 list->data[i] = list->data[i +1];
 }
 --list->size;

 // 缩容 if (list->size <= list->capacity /2 && list->capacity >16) {
 list->capacity /=2;
 list->data = (int *)realloc(list->data, sizeof(int) * list->capacity);
 }
}

// 查找元素int find(SeqList *list, int value) {
 for (int i =0; i < list->size; ++i) {
 if (list->data[i] == value) {
 return i;
 }
 }
 return -1;
}

// 排序void sort(SeqList *list) {
 // 冒泡排序 for (int i =0; i < list->size -1; ++i) {
 for (int j =0; j < list->size - i -1; ++j) {
 if (list->data[j] > list->data[j +1]) {
 int temp = list->data[j];
 list->data[j] = list->data[j +1];
 list->data[j +1] = temp;
 }
 }
 }
}

// 打印顺序表void print(SeqList *list) {
 for (int i =0; i < list->size; ++i) {
 printf("%d ", list->data[i]);
 }
 printf("
");
}


**4. 使用示例**

cint main() {
 SeqList list;
 init(&list,10);

 insert(&list,0,5);
 insert(&list,1,3);
 insert(&list,2,8);
 print(&list); // 输出:538 delete(&list,1);
 print(&list); // 输出:58 int index = find(&list,8);
 printf("元素 %d 的索引为 %d
",8, index); // 输出: 元素8 的索引为1 sort(&list);
 print(&list); // 输出:58 return0;
}


在本文中,我们详细介绍了C语言实现顺序表的基本概念、操作和示例代码。顺序表是一种常见的数据结构,用于存储一组元素的集合。在实际应用中,可以使用上述代码作为参考来实现自己的顺序表功能。

其他信息

其他资源

Top