C语言顺序表实现:结构体、基本操作函数及示例

本文提供C语言实现顺序表的代码,包含结构体定义和基本操作函数,例如初始化、唯一化、输出、获取大小、查找、插入和删除区间等。并附带示例代码演示如何使用这些函数进行操作。

#include <stdio.h>
#include <stdbool.h>

#define MAX_SIZE 100

// 定义顺序表的结构体
typedef struct {
    int data[MAX_SIZE];
    int length;
} SeqList;

// 初始化顺序表
void init(SeqList* list) {
    list->length = 0;
}

// 在顺序表中查找元素的索引
int findElement(SeqList* list, int element) {
    for (int i = 0; i < list->length; i++) {
        if (list->data[i] == element) {
            return i;
        }
    }
    return -1; // 若未找到,返回-1
}

// 在顺序表中插入元素
void insertElement(SeqList* list, int element) {
    if (list->length == MAX_SIZE) {
        printf('顺序表已满,无法插入元素!\n');
        return;
    }

    int index = findElement(list, element);
    if (index != -1) {
        printf('元素已存在,无法重复插入!\n');
        return;
    }

    list->data[list->length] = element;
    list->length++;
}

// 删除顺序表中指定区间内的元素
void deleteRange(SeqList* list, int start, int end) {
    if (start < 0 || end >= list->length || start > end) {
        printf('无效的区间!\n');
        return;
    }

    for (int i = start; i <= end; i++) {
        for (int j = i + 1; j < list->length; j++) {
            list->data[j - 1] = list->data[j];
        }
        list->length--;
    }
}

// 移除顺序表中的重复元素
void unique(SeqList* list) {
    for (int i = 0; i < list->length; i++) {
        for (int j = i + 1; j < list->length; j++) {
            if (list->data[i] == list->data[j]) {
                deleteRange(list, j, j);
                j--; // 删除元素后,需要对当前索引进行调整
            }
        }
    }
}

// 输出顺序表的元素
void printList(SeqList* list) {
    printf('顺序表元素:');
    for (int i = 0; i < list->length; i++) {
        printf('%d ', list->data[i]);
    }
    printf('\n');
}

// 获取顺序表的大小
int getSize(SeqList* list) {
    return list->length;
}

int main() {
    SeqList list;
    init(&list);

    // 插入元素
    insertElement(&list, 5);
    insertElement(&list, 2);
    insertElement(&list, 9);
    insertElement(&list, 2);
    insertElement(&list, 7);

    // 输出顺序表
    printList(&list);

    // 获取顺序表的大小
    int size = getSize(&list);
    printf('顺序表的大小:%d\n', size);

    // 查找元素7
    int index = findElement(&list, 7);
    if (index != -1) {
        printf('元素7在顺序表中的索引为:%d\n', index);
    } else {
        printf('元素7不在顺序表中。\n');
    }

    // 删除区间[1, 3]的元素
    deleteRange(&list, 1, 3);

    // 输出顺序表
    printList(&list);

    return 0;
}

上述代码实现了顺序表的初始化、唯一化、输出、获取顺序表大小、查找元素、插入元素和删除区间等基本操作函数。在主程序中,我们初始化了一个顺序表,并对其进行了一系列操作,包括插入元素、输出顺序表、获取顺序表的大小、查找元素和删除区间。您可以根据自己的需求进行修改和扩展。

总结

本文介绍了使用C语言实现顺序表的基本方法,并提供了相应的代码示例。希望对您理解和使用顺序表有所帮助。

相关资源


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

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