文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 顺序表
- 顺序表建立
- 定义:
- 方法:
- 代码
顺序表
说明:顺序表最方便的就是能通过对应下标直接找到所对应的内存空间,因此十分方便,但代价是会占用一块连续的内存空间。
顺序表建立 定义:定义一张表也就是在内存中开辟一段连续的空间,并给它名字以标识。
- 静态定义顺序表(数组)
- 动态定义顺序表(动态的数组)
- 生成表(通常会指定一个大小)
- 表中插入元素(注意是否会超过最大容量)
- 表中删除元素
- 修改表中元素
- 查找指定元素
#includeusing namespace std; #define MAX 100 typedef int Elemtype; //顺序表定义 typedef struct list { Elemtype* data; int size; int max_size; }SqList; //顺序表初始化函数 void InitList(SqList& L); //插入函数 void InserList(SqList& L, Elemtype data, int n); //删除函数 void DelList(SqList& L, int n); //查找函数 int SerchList(SqList& L, Elemtype data); //销毁顺序表 void DirstList(SqList& L); //int main() //{ // SqList L; // InitList(L); // for (int i = 0; i < 20; i++) // InserList(L, i , i); // DelList(L, 0); // DelList(L, L.size - 1); // int index = SerchList(L, 3); // for (int i = 0; i < L.size; i++) // cout << L.data[i] << " "; // cout << endl << index << " " << L.size; // // // return 0; //} //初始化顺序表 //所有空间赋初值 0 void InitList(SqList& L) { L.data = new Elemtype[MAX]; for (int i = 0; i < MAX; i++) { L.data[i] = 0; } L.size = 0; L.max_size = MAX; } //向表中插入元素 // 0<=n<= SIZE void InserList(SqList& L, Elemtype data,int n) { //检测插入位置是否符合规范 if (n < 0 || n > L.size) { cout << "插入位置非法!" << endl; exit(0); } // 如果当前空间已到达最大空间,则增加新空间 if (L.size == L.max_size) { Elemtype* p = new Elemtype[L.max_size + MAX]; for (int i = 0; i < L.max_size + MAX; i++) { if (i < L.max_size) { p[i] = L.data[i]; } else { p[i] = 0; } } } //对插入位置进行移动,腾出该位置 for (int i = L.size; i > n; i--) { L.data[i] = L.data[i - 1]; } L.data[n] = data; //插入完成后表长增加 1 L.size += 1; } //删除下标为 n 的元素 // 同时会将最后一位元素置为 0 void DelList(SqList& L, int n) { //删除的位置超过给定范围 if (n < 0 || n >= L.size) { cout << "删除位置非法" << endl; exit(0); } //对删除元素进行移动 for (int i = n; i < L.size-1; i++) { L.data[i] = L.data[i + 1]; } //删除后将最后一位置为 0 L.data[L.size - 1] = 0; //表长减 1 L.size -= 1; } //查找元素,若找到则返回下标 //没有找到则返回 -1 int SerchList(SqList& L, Elemtype data) { for (int i = 0; i < L.size; i++) { if (L.data[i] == data) return i; } return -1; } //销毁顺序表 void DirstList(SqList& L) { delete[] L.data; L.size = 0; L.max_size = 0; }



