码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构-顺序表学习资料


    什么是顺序表?

    顺序表是一种线性数据结构,它按照元素在内存中的物理顺序存储数据。顺序表可以通过数组实现,也可以通过链表和动态数组实现。

    顺序表的特点

    • 元素连续存储:顺序表中的元素在内存中是连续存储的,这样可以通过索引直接访问元素,时间复杂度为O(1)。
    • 大小固定:顺序表的大小是固定的,一旦初始化后,无法动态改变大小。
    • 插入和删除效率低:由于顺序表的大小固定,插入和删除元素时会导致其他元素的移动,效率较低,时间复杂度为O(n)。

    顺序表的基本操作

    初始化

    void InitList(SeqList &L) {
        L.data = new ElemType[MAXSIZE];
        L.length = 0;
    }
    
    • 1
    • 2
    • 3
    • 4

    插入元素

    bool ListInsert(SeqList &L, int pos, ElemType e) {
        if (pos < 1 || pos > L.length + 1) {
            return false;  // 插入位置非法
        }
        if (L.length == MAXSIZE) {
            return false;  // 顺序表已满
        }
        for (int i = L.length; i >= pos; i--) {
            L.data[i] = L.data[i - 1];  // 插入位置及之后的元素后移
        }
        L.data[pos - 1] = e;  // 插入新元素
        L.length++;
        return true;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    删除元素

    bool ListDelete(SeqList &L, int pos, ElemType &e) {
        if (pos < 1 || pos > L.length) {
            return false;  // 删除位置非法
        }
        e = L.data[pos - 1];  // 保存被删除的元素
        for (int i = pos; i < L.length; i++) {
            L.data[i - 1] = L.data[i];  // 被删除位置之后的元素前移
        }
        L.length--;
        return true;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    查找元素

    int LocateElem(SeqList L, ElemType e) {
        for (int i = 0; i < L.length; i++) {
            if (L.data[i] == e) {
                return i + 1;  // 返回元素位置
            }
        }
        return 0;  // 未找到元素
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    获取元素

    bool GetElem(SeqList L, int pos, ElemType &e) {
        if (pos < 1 || pos > L.length) {
            return false;  // 获取位置非法
        }
        e = L.data[pos - 1];
        return true;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    清空顺序表

    void ClearList(SeqList &L) {
        L.length = 0;
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    Mybiosource丨Mybiosource胃泌素细胞抗体ELISA试剂盒方案
    全球IP whois信息获取与情报挖掘
    Spring-MVC使用JSR303及拦截器,增强网络隐私安全
    idea pom导入net.sf.json的jar包失败
    磁通量概述
    底层概念的重要意义
    vue基础的一些实例推荐收藏
    Springboot+vue的疫情管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
    IT行业就业方向如何选择?
    《Hierarchical Text-Conditional Image Generation with CLIP Latents》阅读笔记
  • 原文地址:https://blog.csdn.net/qq_42431718/article/details/134247174
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号