顺序表(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);  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值