学习数据结构和算法的第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;
}
相关推荐
学行库小秘33 分钟前
基于门控循环单元的数据回归预测 GRU
人工智能·深度学习·神经网络·算法·回归·gru
_meow_1 小时前
数学建模 15 逻辑回归与随机森林
算法·数学建模·逻辑回归
1白天的黑夜11 小时前
链表-24.两两交换链表中的结点-力扣(LeetCode)
数据结构·leetcode·链表
二向箔reverse1 小时前
机器学习算法核心总结
人工智能·算法·机器学习
南猿北者2 小时前
Cmake学习笔记
笔记·学习·策略模式
猿究院--冯磊2 小时前
JVM垃圾收集器
java·jvm·算法
野犬寒鸦3 小时前
力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
java·后端·算法
diablobaal3 小时前
云计算学习100天-第26天
学习·云计算
我家大宝最可爱3 小时前
动态规划:入门思考篇
算法·动态规划·代理模式
肉夹馍不加青椒4 小时前
第三十三天(信号量)
java·c语言·算法