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

数据结构-顺序表学习资料

什么是顺序表?

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

顺序表的特点

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

顺序表的基本操作

初始化

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

插入元素

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;
}

删除元素

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;
}

查找元素

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

获取元素

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

清空顺序表

void ClearList(SeqList &L) {L.length = 0;
}
http://www.lryc.cn/news/220010.html

相关文章:

  • 微信小程序获取剪切板的内容到输入框中
  • 【年底不想背锅!网络工程师必收藏的排障命令大全】
  • Windows服务器用PowerShell script判断服务器启动时间并做reboot动作
  • 【HTML】播放器如何自动播放【已解决】
  • Go Gin中间件
  • 财务数字化转型的切入点是什么?_光点科技
  • Langchain知识点(上)
  • Tomcat安装配置教程
  • Python小试牛刀:GUI(图形界面)实现计算器UI界面(三)
  • 王道计算机网络
  • 【漏洞复现】IIS_7.o7.5解析漏洞
  • Java 高效生成按指定间隔连续递增的列表(int,double)
  • C++ reference
  • 关于网站安全的一些讨论
  • unity 截图
  • 浏览器无图模式省流量经验
  • 【Hive】分区表和分桶表相关知识点介绍
  • CLIP Surgery论文阅读
  • Luancher和unityLibrary都有build.gradle有什么不同
  • 【Unity】2D角色跳跃控制器
  • Gradle vs Maven
  • Linux认证 | RHCA是什么等级的证书?考到工资能有多少?
  • SQLite System.Data.SQLite和sqlite-net-pcl之间的区别
  • 【Leetcode】【消失的数字】【C语言】
  • 在Linux中安装宝塔面板
  • 数据结构 - 全貌总结
  • 淘宝API商品详情接口丨关键词搜索接口丨用户评论接口丨淘宝销量接口
  • Android开机动画启动流程
  • react_13
  • vscode git提交