1. 什么是线性表
线性表是数据结构中的一种基本数据类型,
它是由 n 个数据元素组成的有限序列。
线性表的特点如下:
- 表中元素个数有限
- 表中元素具有逻辑上的顺序性,表中元素有其先后次序
- 表中元素都是数据元素,每个元素都是单个元素
- 除第一个元素外,每一个元素有且只有一个直接前驱元素,
- 除了最后一个元素外,每一个元素有且只有一个直接后继元素
2. 线性表的实现
一种数据结构的逻辑结构根据需要可表示成多种存储结构
这里线性表的逻辑结构分别用 动态数组 和 动态链表 的存储结构进行实现
-
动态数组
#include <iostream> using namespace std; /* 这个类实现了线性表的基本操作, 包括构造函数、析构函数、获取线性表长度、获取线性表容量、判断线性表是否为空、判断线性表是否已满、 清空线性表、获取指定位置的元素 */ class LinearList { private: int* data; // 动态数组 int length; // 线性表长度 int capacity; // 动态数组容量 public: // 构造函数,初始化空线性表 LinearList(int cap = 10) { data = new int[cap]; length = 0; capacity = cap; } // 析构函数,释放动态数组 ~LinearList() { delete[] data; } // 获取线性表长度 int getLength() { return length; } // 获取线性表容量 int getCapacity() { return capacity; } // 判断线性表是否为空 bool isEmpty() { return length == 0; } // 判断线性表是否已满 bool isFull() { return length == capacity; } // 清空线性表 void clear() { length = 0; } // 获取指定位置的元素 int get(int index) { if (index < 0 || index >= length) { cout << "Index out of bounds!" << endl; return -1; } return data[index]; } // 设置指定位置的元素 void set(int index, int value) { if (index < 0 || index >= length) { cout << "Index out of bounds!" << endl; return; } data[index] = value; } // 在指定位置插入元素 void insert(int index, int value) { if (index < 0 || index > length) { cout << "Index out of bounds!" << endl; return; } if (isFull()) { cout << "LinearList is full!" << endl; return; } // 将插入位置后面的元素依次向后移动一位 for