C语言实现线性表数据结构

线性表是最基本的数据结构之一,本文将介绍如何使用C语言实现一个简单的线性表,并提供完整的源代码示例。

1. 线性表结构体定义

首先,我们需要定义一个结构体来表示线性表,包括以下成员:

  • data:存储数据的数组指针。* length:线性表的当前长度(元素个数)。* capacity:线性表的最大容量。ctypedef struct { int* data; // 存储数据的数组指针 int length; // 线性表长度 int capacity; // 线性表容量} LinearList;

2. 初始化线性表

初始化线性表时,我们需要为数据数组分配内存空间,并将长度和容量初始化为0。cvoid initList(LinearList* list, int capacity) { list->data = (int*)malloc(capacity * sizeof(int)); list->length = 0; list->capacity = capacity;}

3. 插入元素

插入元素时,我们需要检查插入位置是否合法,以及线性表是否已满。如果插入位置合法且线性表未满,则需要将插入位置及之后的元素后移一位,然后将新元素插入到指定位置,并将线性表长度加1。cvoid insert(LinearList* list, int index, int value) { if (index < 0 || index > list->length) { printf('插入位置不合法 '); return; } if (list->length == list->capacity) { printf('线性表已满,无法插入 '); return; } for (int i = list->length - 1; i >= index; i--) { list->data[i + 1] = list->data[i]; } list->data[index] = value; list->length++;}

4. 删除元素

删除元素时,我们需要检查删除位置是否合法。如果删除位置合法,则将删除位置之后的元素前移一位,并将线性表长度减1。cvoid removeAt(LinearList* list, int index) { if (index < 0 || index >= list->length) { printf('删除位置不合法 '); return; } for (int i = index; i < list->length - 1; i++) { list->data[i] = list->data[i + 1]; } list->length--;}

5. 打印线性表

为了方便查看线性表的内容,我们可以编写一个打印函数遍历并输出所有元素。cvoid printList(LinearList* list) { printf('线性表元素:'); for (int i = 0; i < list->length; i++) { printf('%d ', list->data[i]); } printf(' ');}

6. 释放线性表内存

最后,我们需要在程序结束时释放线性表所占用的内存空间。cvoid freeList(LinearList* list) { free(list->data); list->length = 0; list->capacity = 0;}

7. 完整代码示例c#include <stdio.h>#include <stdlib.h>

// 定义线性表结构体typedef struct { int* data; // 存储数据的数组指针 int length; // 线性表长度 int capacity; // 线性表容量} LinearList;

// 初始化线性表void initList(LinearList* list, int capacity) { list->data = (int*)malloc(capacity * sizeof(int)); list->length = 0; list->capacity = capacity;}

// 向线性表插入元素void insert(LinearList* list, int index, int value) { if (index < 0 || index > list->length) { printf('插入位置不合法 '); return; } if (list->length == list->capacity) { printf('线性表已满,无法插入 '); return; } for (int i = list->length - 1; i >= index; i--) { list->data[i + 1] = list->data[i]; } list->data[index] = value; list->length++;}

// 删除线性表中指定位置的元素void removeAt(LinearList* list, int index) { if (index < 0 || index >= list->length) { printf('删除位置不合法 '); return; } for (int i = index; i < list->length - 1; i++) { list->data[i] = list->data[i + 1]; } list->length--;}

// 打印线性表元素void printList(LinearList* list) { printf('线性表元素:'); for (int i = 0; i < list->length; i++) { printf('%d ', list->data[i]); } printf(' ');}

// 释放线性表内存void freeList(LinearList* list) { free(list->data); list->length = 0; list->capacity = 0;}

int main() { LinearList list; initList(&list, 5); insert(&list, 0, 10); insert(&list, 1, 20); insert(&list, 2, 30); insert(&list, 1, 15); printList(&list); removeAt(&list, 2); printList(&list); freeList(&list); return 0;}

8. 总结

本文介绍了如何使用C语言实现一个简单的线性表数据结构,并提供了完整的源代码示例。你可以根据自己的需求对代码进行扩展和优化,例如实现更多操作(如查找、排序等),或使用其他数据类型存储数据。

C语言实现线性表数据结构(附完整源码)

原文地址: http://www.cveoy.top/t/topic/b0Hz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录