C语言数据结构1:顺序表

本文主要包含以下几点:

1)自定义顺序表

  顺序表声明代码如下(C语言实现):

typedef struct Table{
   
    int *head;      // 动态数组
    int length;     // 记录顺序表长度
    int size;       // 记录顺序表内存大小
} table;

2)初始化顺序表

  顺序表初始化代码如下(C语言实现):

table initTable(){
   
    table t;                                      // 定义顺序表名称t
    t.head = (int*)malloc(Size* sizeof(int));     // 动态申请存储空间
    if (!t.head){
                                    // 申请存储空间失败
        printf("内存分配失败,初始化失败!\n");
        exit(0);
    } else{
   
        printf("初始化成功!\n");
    }
    t.length = 0;       // 初始化顺序表长度为0
    t.size   = Size;    // 初始化顺序表内存大小为Size
    return t;
}

3)顺序表插入元素

  顺序表插入元素代码如下(C语言实现):elem表示插入的元素,position表示插入的位置。

table insertTable(table t, int elem, int position){
   
    // 判断位置是否正确
    if (1 > position || position > t.length+1){
   
        printf("插入位置异常!\n");
        return t;
    }
    // 顺序表长度等于内存大小时,插入需要动态增大数组空间
    if (t.length == t.size){
   
        t.head = (int *)realloc(t.head,(t.size + 1)* sizeof(int));
        // 分配失败返回
        if (!t.head){
   
            printf("分配数组空间失败!\n");
            return t;
        }
        // 申请成功,内存大小加1
        t.size++;
        printf("分配数组空间成功!\n");
    }
    // 开始插入:将position及其后面位置往后移一个位置
    for (int i = t.length-1; i >= position-1; i--) {
   
        t.head[i+1] = t.head[i];
    }
    // 移动完成之后,插入该元素,插入的位置对应数组下标是position-1
    t.head[position-1] = elem;
    // 插入成功,顺序表长度加1
    t.length++;
    return t;
}

4)顺序表删除元素

  顺序表删除元素代码如下(C语言实现):position表示删除的位置。

table deleteTable(table t, int position){
   
    if 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值