线性表的顺序存储实现(数组形式)称为顺序表。
线性表顺序表示原理解析
这里描述的线性表是逻辑结构的,独立于存储结构。
线性表的顺序表示简称顺序表。
顺序表实现线性表的方式是使用数组。
线性表第一个元素的数组下标是0。

另外一种实现顺序表的方法:
使用数组方式比动态分配更简单常用。
动态分配的数组仍属于顺序存储结构。
顺序表的初始化插入、删除、查询代码
1#include <stdio.h> 2 3#define MaxSize 50 4typedef int Elemtype; //定义ElemSize为int类型,当ElemSize的类型发生改变时可以迅速完成代码修改 5typedef struct { 6 Elemtype data[MaxSize]; 7 int length; //顺序表长度 8}SqList; 9bool ListInsert(SqList& L, int i, Elemtype element) //插入会改变顺序表L 10{ 11 if (i >= 1 && i <= L.length + 1) //判断插入位置i是否合法 12 { 13 if (MaxSize >= L.length) //判断存储空间是否已满 14 { 15 for (int j = L.length; j >= i; j--) 16 { 17 L.data[j] = L.data[j - 1]; //要插入位置后的元素后移 18 } 19 L.data[i - 1] = element; //放入要插入的元素 20 L.length++; //插入后顺序表的长度+1 21 return true; //插入成功返回true 22 } 23 } 24 return false; 25} 26void PrintSqList(SqList L) //打印顺序表 27{ 28 for (int i = 0; i < L.length ; i++) 29 { 30 printf("%3d", L.data[i]); 31 } 32 printf("\n"); 33} 34bool ListDelete(SqList& L, int i, Elemtype& del) //删除会改变顺序表L,del获取删除元素的值 35{ 36 if (i < 1 || i > L.length + 1) //判断删除位置i是否合法 37 { 38 return false; 39 } 40 del = L.data[i - 1]; 41 for (i; i <= L.length; i++) 42 { 43 L.data[i - 1] = L.data[i]; 44 } 45 L.length--; 46} 47int LocateElem(SqList L, Elemtype element) //查找元素 48{ 49 for (int i = 0; i < L.length; i++) 50 { 51 if (element == L.data[i]) 52 { 53 return i + 1; //i是数组下标,i+1后才是顺序表的下标 54 } 55 } 56 return 0; 57} 58int main() 59{ 60 SqList L; //定义顺序表L 61 bool ret; //bool是类型 62 //顺序表元素定义 63 L.data[0] = 3; 64 L.data[1] = 12; 65 L.data[2] = 73; 66 L.data[3] = 84; 67 L.data[4] = 25; 68 L.data[5] = 65; 69 L.length = 6; //设置顺序表长度 70 PrintSqList(L); 71 ret = ListInsert(L, 2, 10); //传入顺序表L、要插入的位置、要插入的数值 72 if (ret) //true值为1,false值为0 73 { 74 printf("Insert SqList Success\n"); 75 PrintSqList(L); 76 } 77 else 78 { 79 printf("Insert SqList failed\n"); 80 } 81 Elemtype del; 82 ret = ListDelete(L, 3, del); //传入顺序表L、要删除的位置、要删除的数值 83 if (ret) //true值为1,false值为0 84 { 85 printf("Delete SqList Success\n"); 86 PrintSqList(L); 87 printf("要删除的元素是:%d\n", del); 88 } 89 else 90 { 91 printf("Delete SqList failed\n"); 92 } 93 int pos; //存储元素位置 94 pos = LocateElem(L, 824); 95 if (pos) 96 { 97 printf("要查询的元素位置在顺序表中第%d个\n",pos); 98 } 99 else 100 { 101 printf("顺序表中没有要查询的元素\n"); 102 } 103 return 0; 104}