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

数据结构 顺序表及其实现

1. 线性表的定义


线性表是n 个具有相同特性的数据元素的有序序列。
线性表在逻辑上可以想象成是连续的⼀条线段,线段上有很多个点,⽐如下图:

2. 线性表的顺序存储-顺序表


线性表的顺序存储就是顺序表。
如果下图中的⽅格代表内存中的存储单元,那么存储顺序表中这个元素就是放在连续的位置上:

3、创建及其实现方式

const int N = 1e6 + 10; // 定义静态数组的最⼤⻓度 
int a[N], n; // 直接创建⼀个⼤数组来实现顺序表, n 表⽰当前有多少个元素

尾插
代码实现:

//尾插 
void push_back(int x)
{
 a[++n] = x; // 下标为 0 的位置空出来 
 
 // 这样操作⼀般根据个⼈习惯,也可以从 0 开始计数 
 // 不过有些问题从 1 计数,处理起来可以不⽤考虑边界情况

头插
代码实现: 要把所有的元素全部右移⼀位,然后再放到头部位置 

// 头插 void push_front(int x)
{
 // 要把所有的元素全部右移⼀位,然后再放到头部位置 
 for(int i = n; i >= 1; i--) // 循环的顺序是否可以改变? 
 {
 a[i + 1] = a[i];
 }
 a[1] = x; // 把 x 放在⾸位 
 n++; // 不要忘记总个数 +1 
}

任意位置插⼊
代码实现:

// 任意位置插⼊ - 在位置 p 处,插⼊⼀个 x 
void insert(int p, int x)
{
 for(int i = n; i >= p; i--) // 注意顺序不要颠倒 
 {
 a[i + 1] = a[i]; 
 }
 a[p] = x;
 n++; // 不要忘记总个数 +1 
}

尾删
代码实现:

void pop_back()
{
 n--;
}

头删
代码实现:

// 头删 
void pop_front()
{
 // 把所有元素向前移动⼀位 
 for(int i = 2; i <= n; i++) // 顺序是否能颠倒? 
 {
 a[i - 1] = a[i];
 }
 n--; // 总个数 -1 
}

任意位置删除
代码实现:

// 任意位置删除 
void erase(int p)
{
 for(int i = p + 1; i <= n; i++)
 {
 a[i - 1] = a[i];
 }
 n--; // 总个数 -1 
}

按值查找
代码实现:

// 查找这个数第⼀次出现的位置,找不到返回 0 
int find(int x)
{
 for(int i = 1; i <= n; i++)
 {
 if(a[i] == x) return i;
 }
 return 0;
}

按位查找
代码实现:

// 返回 p 位置的数 
int at(int p)
{
 return a[p];
}

修改元素
代码实现:

// 把 p 位置的数修改成 x 
void change(int p, int x)
{
 a[p] = x;
}

清空顺序表
代码实现:

// 清空顺序表 
void clear()
{
 n = 0;
}


http://www.kler.cn/a/541028.html

相关文章:

  • 攻防世界33 catcat-new【文件包含/flask_session伪造】
  • win32汇编环境,对线程的创建与操作示例一
  • 点大商城V2-2.6.6源码全开源uniapp +搭建教程
  • Django项目中创建app并快速上手(pycharm Windows)
  • 除了webpackPrefetch,还有什么其他预加载组件的方法?
  • Qt:常用控件
  • Oracle(OCP和OCM)
  • 微信小程序文件流转base64文件,wx.arrayBufferToBase64()方法已弃用
  • Linux网卡为什么没有对应的设备文件
  • 二叉树的遍历方式和子问题思路
  • MyBatis常见知识点
  • 一、通义灵码插件保姆级教学-IDEA(安装篇)
  • A Normalized Gaussian Wasserstein Distance for Tiny Object Detection(纯翻译)
  • 常见数据结构的C语言定义---《数据结构C语言版》
  • Pdf手册阅读(1)--数字签名篇
  • 爬虫工程师分享:获取京东商品详情SKU数据的技术难点与攻破方法
  • AWS成本优化实战:查询未关联弹性IP地址的完整指南
  • 1.4 AOP编程范式
  • 【Matlab优化算法-第15期】基于NSGA-II算法的铁路物流园区功能区布局优化
  • 基于javaweb的SpringBoot电影推荐系统
  • 龙迅LT8711UXD 高性能2PORT TYPE-CDPEDP转HDMi 2.0加PD 3.0,内置MCU
  • 【C++】RBTree(红黑树)模拟实现
  • C#(19) 抽象类和抽象方法,接口
  • 使用 PDF SDK 通过页面分割和数据提取对建筑图纸进行分类
  • MYSQL实现原理 - 事务的隔离级别
  • nginx负载均衡后sse效果出不来,应该怎么排查