Bootstrap

顺序表(C语言)


在数据结构的世界里,顺序表是一种基础且重要的结构。它通常使用数组来实现,提供了快速的随机访问能力。本文将介绍如何在C语言中实现一个简单的顺序表,包括初始化、插入、删除和打印操作。

1.定义顺序表结构体

首先,我们需要定义一个结构体来表示顺序表:

#define Max_Size 100  
typedef int ElemType;  
typedef struct {  
    ElemType* data;    //存放线性表中的长度  
    int length;     //存放线性表长度  
}Seqlist;   //顺序表类型

2.初始化顺序表

接下来,我们需要实现一个初始化函数,为顺序表分配内存,并设置初始长度和容量:

// 创建顺序表  
void initSeqlist(Seqlist* L) {  
    L->data = (ElemType*)malloc(sizeof(ElemType)*Max_Size);  
    if(L->data == NULL) {  
        printf("顺序表创建失败\n");  
    }  
    L->length = 0;  
}

3.插入元素

3.1顺序表头插

//顺序表头插  
void insertATBegining(Seqlist* L) {  
    int elem = 0;  
    printf("请输入要头插的元素:\n");  
    scanf("%d",&elem);  
    if(L->length >= Max_Size) {  
        printf("顺序表已满,无法插入");  
    }  
    else {  
        for (int i = L->length - 1; i >= 0; i--) {  
            L->data[i + 1] = L->data[i];  
        }  
        L->data[0] = elem;  
        L->length++;  
    }  
}

3.2 顺序表尾插

//顺序表尾插  
void insertAtBegining(Seqlist* L) {  
    int elem = 0;  
    printf("请输入要尾插的元素:\n");  
    scanf("%d",&elem);  
    if(L->length >= Max_Size) {  
        printf("顺序表已满,无法插入");  
    }  
    else {  
        L->data[L->length] = elem;  
        L->length++;  
    }  
}

4.删除顺序表指定元素

//删除指定元素  
void DetateElem(Seqlist* L) {  
    int elem = 0;  
    printf("请输入要删除的元素:\n");  
    scanf("%d",&elem);  
    for (int i = 0; i < L->length; i++) {  
        if(L->data[i] == elem) {  
            for (int j = i; j < L->length - 1; j++) {  
                L->data[j] = L->[j + 1];  
            }  
            L->length--;  
        }  
    }  
}

5.查找元素

// 查找元素是否在顺序表中  
bool findelem(Seqlist* L) {  
    int elem = 0;  
    printf("请输入要查找的元素:\n");  
    scanf("%d",&elem);  
    for (int i = 0; i < L->length; i++) {  
        if (L->data[i] == elem) {  
            return true;  
        }  
    }  
    return false;  
}

6.输出顺序表

// 输出顺序表  
void DispSeqlise(Seqlist* L) {  
    if(L->length == 0) {  
        printf("线性表为空\n");  
    }  
    for (int i = 0; i < L->length; i++) {  
        printf("%d",L->data[i]);  
    }  
}

7.销毁顺序表

// 销毁顺序表  
void deleteSeqlist(Seqlist* L) {  
    free(L);  
}
;