C语言顺序表的实现与应用
顺序表是线性表的一种,它是由一组地址连续的存储单元依次存储数据元素构成的,在C语言中,顺序表的实现主要依赖于数组,顺序表具有随机访问的特点,即通过索引可以直接访问到表中的任何元素,顺序表的优点是操作简单,插入和删除元素的效率较高;缺点是插入和删除元素时需要移动大量元素,可能会导致内存碎片。
顺序表的实现
1、定义顺序表结构体
typedef struct {
    int *data; // 存储数据的数组
    int length; // 当前顺序表的长度
    int capacity; // 顺序表的最大容量
} SeqList;
2、初始化顺序表
void initSeqList(SeqList *list, int capacity) {
    list->data = (int *)malloc(sizeof(int) * capacity);
    list->length = 0;
    list->capacity = capacity;
}
3、插入元素
int insert(SeqList *list, int index, int value) {
    if (list->length == list->capacity) {
        return -1; // 容量不足,无法插入
    }
    for (int i = list->length; i > index; i--) {
        list->data[i] = list->data[i - 1]; // 向后移动元素
    }
    list->data[index] = value; // 插入元素
    list->length++; // 长度加1
    return 0; // 插入成功
}
4、删除元素
int delete(SeqList *list, int index) {
    if (index < 0 || index >= list->length) {
        return -1; // 索引无效,无法删除
    }
    for (int i = index; i < list->length - 1; i++) {
        list->data[i] = list->data[i + 1]; // 向前移动元素
    }
    list->length--; // 长度减1
    free(list->data + list->length); // 释放多余的空间
    list->capacity--; // 容量减1
    return 0; // 删除成功
}
5、查找元素
int find(SeqList *list, int value) {
    for (int i = 0; i < list->length; i++) {
        if (list->data[i] == value) {
            return i; // 找到元素,返回索引
        }
    }
    return -1; // 未找到元素,返回-1
}
顺序表的应用实例
#include <stdio.h>
#include "seq_list.h" // 引入顺序表头文件
int main() {
    SeqList list; // 定义顺序表变量
    initSeqList(&list, 10); // 初始化顺序表,最大容量为10
    printf("请输入10个整数:");
    for (int i = 0; i < 10; i++) {
        scanf("%d", &list.data[i]); // 从键盘输入数据,存入顺序表
    }
    printf("顺序表中的元素为:");
    for (int i = 0; i < list.length; i++) {
        printf("%d ", list.data[i]); // 输出顺序表中的元素
    }
    printf("
");
    printf("请输入要查找的元素:");
    int value;
    scanf("%d", &value); // 从键盘输入要查找的元素值
    int index = find(&list, value); // 查找元素,返回索引或-1表示未找到
    if (index != -1) {
        printf("元素%d在顺序表中的位置为:%d", value, index); // 输出元素位置信息
    } else {
        printf("未找到元素%d", value); // 输出未找到信息
    }
    printf("



		
		
		
		
还没有评论,来说两句吧...