学习数据结构和算法的第8天

顺序表的实现

进行头插

eg:在数组 1 2 3 4 5的开头插入-1

变成-1 1 2 3 4 5

c 复制代码
#include<stdio.h>
typedef struct SeqList {
    SLDataType a[100]; // 假设顺序表最大容量为100
    int size; // 当前顺序表的大小
} SL;
void SeqListPushFront(SL* ps, SLDataType x)
{
    int end = ps->size-1;
    while (end >= 0) {
        ps->a[end+1] = ps->a[end];
        --end;
    }
    ps->a[0] = x;
    ps->size++;
}
int main()
{
    SL seqList; // 创建一个顺序表对象
    seqList.size = 0; // 初始化顺序表的大小为0
    // 向顺序表的开头插入元素
    SeqListPushFront(&seqList, 10);
    SeqListPushFront(&seqList, 20);
    SeqListPushFront(&seqList, 30);
    // 打印顺序表中的元素
    for (int i = 0; i < seqList.size; i++) {
        printf("%d ", seqList.a[i]);
    }
    printf("\n");
    
    return 0;
}

头删

eg:数组1 2 3 4 5

删去1

c 复制代码
#include <stdio.h>
typedef struct SeqList {
    SLDataType a[100];
    int size;
} SL;
void SeqListRemoveFront(SL* ps)
{
    if (ps->size <= 0) {
        // 顺序表为空,无法进行头删操作
        return;
    }
    for (int i = 0; i < ps->size - 1; i++) {
        ps->a[i] = ps->a[i + 1];
    }
    ps->size--;
}
int main()
{
    SL seqList;
    seqList.size = 0;
    // 添加一些元素到顺序表
    seqList.a[0] = 10;
    seqList.a[1] = 20;
    seqList.a[2] = 30;
    seqList.size = 3;
    // 执行头删操作
    SeqListRemoveFront(&seqList);
    // 打印顺序表中的元素
    for (int i = 0; i < seqList.size; i++) {
        printf("%d ", seqList.a[i]);
    }
    printf("\n");
    return 0;
}
相关推荐
To_OC28 分钟前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法
饼干哥哥1 小时前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
地平线开发者2 小时前
Transformer模型部署之性能优化指南
算法
地平线开发者3 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
半个落月6 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星7 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星7 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC1 天前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
鱼鱼不愚与1 天前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法