学习数据结构和算法的第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;
}
相关推荐
一只不想敲代码的程序猿1 小时前
如何更高效地拆解问题?
算法
微尘hjx2 小时前
【Deep-OC-SORT 02】多轨迹算法Deep-OC-SORT-相对 OC-SORT 的改进点
人工智能·算法·yolo·目标跟踪·视觉检测·ultralytics·deep-oc-sort
梦帮科技2 小时前
意识启发式量子隧穿退火算法用于全局优化 (CITA) 完整技术指南
网络·人工智能·算法·量子计算·模拟退火算法
一去不复返的通信er3 小时前
排序 + 双指针:力扣15三数之和
算法·leetcode
lisw053 小时前
作为人类代理的大语言模型及其角色分类!
人工智能·学习·语言模型
Z21-X3 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
Pniubi3 小时前
力扣3无重复字符的最长字串(滑动窗口)
算法·leetcode·职场和发展
坤坤子吖4 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
On The Road :4 小时前
深入理解 JVM 垃圾回收:GC 是什么、如何判定垃圾、四大回收算法全解析
jvm·算法
Rabitebla4 小时前
【Linux学习笔记】进程篇(九):进程的创建与退出——fork、写时拷贝与退出码
linux·c++·笔记·学习