数据结构之----线性表

线性表分为  顺序存储结构 和  链式存储结构

线性表的顺序存储结构: 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
1,顺序表的结构:
        #define  MAXSIZE  20
        typedef  int  ElemType;
        typedef   struct
        {
               ElemType  data[MAXSIZE];     //数组
               int   length;       //顺序表长度
        }Sqlist;

        顺序表的第  i  个元素的下标为  i+1 

2,顺序表的插入与删除
     //插入数据
     void  Insertion(QList& list, int pos, int data)
     {
         //pos不是下标,从1开始
         if ((pos > list.length) || (pos >= MAX_SIZE))
         {
    
                return;
         }
         int posidx = pos - 1; //位置所对应的下标
         int maxidx = list.length - 1;
         for (int i = maxidx; i >= posidx; i--)
         {
               list.data[i + 1] = list.data[i];
               if (i == posidx)
               {
                    list.data[i] = data;
                }
          }
          list.length++;
    }
    //删除数据
    void  RemovePos(QList& list, int pos)
    {
          //pos不是下标,从1开始
          if ((pos > list.length) || (pos >= MAX_SIZE))
          {
                return;
          }
          int idxpos = pos - 1;
          int idxlen = list.length - 1;
          for (int i = idxpos; i < idxlen; i++)
          {
                list.data[i] = list.data[i + 1];
          }
          list.data[idxlen] = 0;
          list.length--;
     }
3,顺序表的优点和缺点
      时间复杂度为O(1)
      它比较适合元素个数不太变化,而更多是存取数据的应用。

      优点:无需为表示表中元素之间的逻辑关系而增加额外的存储空间
                可以快速地存取表中任一位置的元素
      缺点:插入和删除操作需要移动大量元素
                长度变化大难以确定存储空间的容量

二,链表

链表大概有三种:
                 单链表,循环链表,双向链表。

单链表节点:
             struct  LinkNode
             {
                    void*  data;
                    struct   LinkNode*  next;
             };
双向链表节点:
             struct  DulinkNode
             {
                    void*  data;
                    struct  DulinkNode* per;
                    struct  DulinkNode* next;
             }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scrapy crawl时报Unknown command: crawl

Scrapy 项目初始化问题&#xff1a;在运行 scrapy crawl 命令之前&#xff0c;你需要先在项目目录中初始化一个 Scrapy 项目。确保你已经在项目目录中执行了 scrapy startproject <project_name> 命令来初始化项目。 如果没有startproject直接genspider然后crawl就会报这…

数据结构---经典链表OJ

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

css基础之用户界面样式、导航栏和三角

用户界面样式 一、鼠标样式cursor default默认 pointer小手 move移动 text文本 not-allowed禁止 二、轮廓线outline 去掉轮廓线 1.outline: 0; 2.outline: none; 三、防止拖拽文本域resize resize: none; 四、vertical-align 实现图片与表单&#xff08;行内块元素&…

C# SHA3-224加密

打开你的.NET项目。 右键点击解决方案资源管理器中的项目&#xff0c;选择“管理NuGet包”。 在NuGet包管理器中&#xff0c;点击“浏览”选项卡。 搜索“BouncyCastle”包&#xff0c;然后点击“安装”。 等待安装完成。 using Org.BouncyCastle.Crypto.Digests; using Or…

【VSCode】 使用 Prettier 插件格式代码时 如何避免将 大写PX 转为 小写px

【方法1】 setting.json 文件中添加代码 "vetur.format.defaultFormatter.css": "none","vetur.format.defaultFormatter.scss": "none","vetur.format.defaultFormatter.less": "none","[vue]": {&qu…

7个开发者必须知道的Nodejs 设计模式

好的&#xff0c;我已经收到了完整的内容&#xff0c;我将开始翻译。 设计模式是解决日常软件设计问题所必需的。这些问题可能包括&#xff1a; 维护数据库连接创建和管理对象通知一组订阅了特定实体的用户。 如果你试图自己想出解决方案&#xff0c;你很可能需要花费大量精…

数据结构(五)什么是算法

数据结构&#xff08;五&#xff09;什么是算法 要点&#xff1a;算法是一种指令集&#xff0c;有限且不依赖于某一种程序语言 思考&#xff1a;算法为什么是一种思想 01 算法的定义 一个有限指令集接收一些输入&#xff08;有些情况下不需要输入&#xff09;产生输出&…

使用 CloudFlare 后如何才能不影响搜索引擎蜘蛛爬虫

今天,明月给大家再次详细讲解一下,明月在使用 CloudFlare 后如何才能不影响搜索引擎蜘蛛爬虫对站点的抓取,因为这是很多首次使用 CloudFlare 的站长们容易忽略和触犯的问题,并不是 CloudFlare 不友好,而是 CloudFlare 的防火墙(WAF)实在是太给力。其实在【CloudFlare 如…

java项目之共享汽车管理系统(springboot+mysql+vue)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的共享汽车管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 共享汽车管理系统的主要…

为什么推荐将 IoTDB 服务地址配置为 HostName 而非 IP?

设置主机名启动 IoTDB 可在不修改配置情况下&#xff0c;在不同环境运行 IoTDB 并实现多次部署。 01 前言 IoTDB 在配置启动时有两种方式&#xff1a; 1. 通过设置 HostName&#xff08;主机名&#xff09;的方式来启动 IoTDB&#xff08;推荐方式&#xff09;&#xff1b; 2. …

lua 判断字符串是否包含子字符串(点符号查找)

一、string.find 方法 lua代码 function containsDot(str) local pos string.find(str, ".") if pos then return true else return false end end -- 测试函数 local testString1 "hello.world" local testString2 "helloworld&quo…

SpringBoot集成jasypt对yml文件指定参数加密并自定义@bean隐藏密钥

1、查看SpringBoot和jasypt对应版本。 Jasypt 1.9.x 通常与 Spring Boot 1.5.x 相对应。 Jasypt 2.1.x 通常与 Spring Boot 2.0.x 相对应。 Jasypt 3.x 通常与 Spring Boot 2.1.x相对应。 2、引入maven <dependency><groupId>com.github.ulisesbocchio</groupI…

CSS - 选择器

目录 一、CSS的基本语法格式&#xff1a; 二、常见的CSS选择器 ​编辑1.标签选择器 2.类选择器 3.id选择器 4.复合选择器 5.通用选择器 三、常见的CSS样式 1.color 2.font-size 3.border 4.width/height 5.padding 6.margin 四、CSS的引入方式 1.行内引入 …

Tableau-BI仪表盘搭建

目录 经营数据总览 经营数据详情 每日营收数据 每日流量数据 新老客占比 平台占比 门店占比 投放情况 订单分布 配送分布 汇总搭建仪表板 构思仪表盘布局 经营数据总览 数据总览表&#xff0c;显示的是数据&#xff0c;就拖入文本中&#xff0c;其他同样加入到已经…

开源免费的定时任务管理系统:Gocron

Gocron&#xff1a;精准调度未来&#xff0c;你的全能定时任务管理工具&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 Gocron是github上一个开源免费的定时任务管理系统。它使用Go语言开发&#xff0c;是一个轻量级定时任务集中调度和管理系统&#xff0c;用于替代L…

JavaEE初阶-多线程5

文章目录 一、线程池1.1 线程池相关概念1.2 线程池标准类1.3 线程池工厂类1.4 实现自己的线程池 二、定时器2.1 java标准库中的定时器使用2.2 实现一个自己的定时器2.2.1 定义任务类2.2.2 定义定时器 一、线程池 1.1 线程池相关概念 池这个概念在计算机中比较常见&#xff0c…

[笔试训练](十九)

目录 055:小易的升级之路 056:礼物的最大价值 057:对称之美 055:小易的升级之路 小易的升级之路_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 根据题意简单模拟即可&#xff0c;可单独写gcd函数求最大公因数。 int gcd(int a, int b) { if (…

抖音抖加如何投放效果最好?

抖音平台上的抖加投放是一种有效的推广方式,但对于一些新手来说,可能会遇到投放效果不佳的情况。为了帮助大家提高抖加投放的效,下面分享一些抖音抖加投放技巧。 一、选择合适的投放模式 抖音抖加有三种投放模式:系统智能投放、自定义定向投放以及达人相似粉丝投放。不同…

Redis——Redis数据分片的三种算法

Redis的数据分片通常是为了实现水平扩展&#xff0c;将数据分散到多个Redis节点上&#xff0c;以提高系统的容量和性能。在Redis的不同实现和集群方案中&#xff0c;数据分片的算法有所不同。以下是Redis数据分片的三种常见算法&#xff1a; 哈希取模分片&#xff08;Hash Modu…

数字水印 | 基于小波变换的数字水印技术

&#x1f34d;原文&#xff1a; 基于小波变换的数字水印技术 &#x1f34d;写在前面&#xff1a; 本文属搬运博客&#xff0c;自己留存学习。 正文 小波变换 把一个信号分解成由基本小波经过移位和缩放后的一系列小波&#xff0c;它是一种 “时间——尺度” 信号的多分辨率分…