数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
前言
线性表是数据结构中最基础也是最常见的一种结构,它像一根“线”把数据像“串珠子”一样串联了起来。根据数据在内存中是否连续,可以把线性表分为:顺序表和链表 ,本文详细介绍顺序表。
1. 顺序表介绍
1.1 什么是顺序表
想象一栋小区楼,这栋楼里的房间都被规划成相同的样式,并且根据房间所在楼层和在楼层中的位置给它分配了房间号,我们拿到一个房间号就能快速准确的找到对应的房间。
顺序表就如同这一栋小区,数据从第一个房间开始依次占据一个“房间”,由于每个房间的大小是固定的,所以当我们想访问第i个“房间”的时候,可以通过“起始位置 + 偏移量” 直接找到它所在的位置,如下图所示:
在程序的世界中,对元素的计数一般是从0开始的,所以“偏移量”的计算公式为:
(i - 1)* sizeof(数据类型)
1.2 顺序表的性质
- 顺序表在内存中是连续的,并且顺序表中的数据在存储结构上是存在先后顺序的。
- 顺序表中的数据应为同一种数据类型,此时“偏移量”只取决于数据的位数。
- 顺序表所占据的内存空间全部用来存储数据了,所以它的存储密度为1。
1.3 顺序表的构成
顺序表主要由三部分组成:
- 容量
- 数据的个数
- 存储空间
1.4 顺序表的框架代码(C++版)
#include <iostream>
using namespace std;
template <typename Type> class Vector {
private:
int size, length;
Type *data;
public:
Vector(int new_size) // 构造函数,用来初始化顺序表
~Vector() // 析构函数,回收顺序表的存储空间
void insert(int loc, Type value) // 用来实现顺序表的插入功能
void expand() // 用来实现顺序表的扩容功能
void search(const Type &value) // 用来实现顺序表的查询功能
void remove(int loc) // 用来实现顺序表的删除功能
void dispaly