当前位置: 首页 > news >正文

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

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

线性表的顺序存储结构: 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
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.lryc.cn/news/347582.html

相关文章:

  • thinkphp5.1 模型auto
  • 企业微信创建应用(一)
  • Cosmo Bunny Girl
  • 初始化linux数据盘(3TB)分区-格式化-挂载目录
  • NFS网络文件系统的应用
  • AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘
  • 进程的共享主存通信实验
  • 深度缓冲技术在AI去衣中的神奇作用
  • 能效?性能?一个关于Windows下使用openssl speed进行速度测试的诡异问题
  • block性能考虑和线程安全
  • 没有公网ip,如何实现外网访问内网?
  • Python中如何将小数转化为百分数进行输出
  • 加入全球少儿编程运动:Scratch让每个孩子都能成为创造者(Scratch最新版客户端和初/中/高级学习资料整理分享)
  • 引擎:主程渲染
  • Java 高级面试问题及答案
  • 邮件的安全认证(dkim/spf/dmarc)
  • 单调栈问题
  • Hexo博客重新部署与Git配置
  • KUKA机器人专业名词解释
  • 阿里云 物联网平台 MQTT连接、数据传输
  • 栈和队列OJ练习题及解答
  • 渗透测试-信息收集
  • 电力乙级资质延伸换证:企业转型的契机
  • 基于Redis实现分布式锁——Java版本
  • Qt自定义控件--提升为
  • Lua 基础 01 入门
  • 远程连接阿里云ECS
  • 【C++】多态(上)超详细
  • 【Git】 Git分支操作指南
  • 智慧文旅赋能旅游服务升级:以科技创新驱动行业变革,打造智慧化、个性化、高效化的旅游新体验,满足游客日益增长的多元化需求