1.定义线性表的顺序存储称为顺序表。元素间逻辑关系相邻,内存地址相邻;支持随机访问,可以通过下标访问表中每一个元素。2.结构定义#define MaxSize 50typedef struct {int data[MaxSize];int length;}Sqlist;3.相关算法1)顺序表创建void creat(Sqlist &L){int a;printf(“线性表元素总数:\n”);scanf("%d",&a);printf(“依次输入每个元素\n”);for(int i=0;i<a;i++){scanf("%d",&L.data[i]);L.length++;}}2)指定位置插入元素int insert(Sqlist &L,int i , int e){//在某个位置插入一个元素(成功返回1,失败返回0)if(i<1||i>L.length+1)//如果插入位置小于1或者大于表长+1,则位置不合法return 0;else if(i>=MaxSize)//如果位置大于等于最大表长,则不可插入return 0;else if (i== L.length+1){L.data[L.length] = e;L.length ++;return 1;}else {for(int j = L.length;j>=i;j–)//将插入位置后的所有元素后移{ L.data[j]=L.data[j-1];//这里需注意,数组下标是从0开始的 L.data[i-1] = e;} L.length++;//表长+1 return 1;}}3)删除指定位置元素int listdelete(Sqlist &L, int i , int &e){//成功返回1失败返回0if(i<1||i>L.length)//如果删除位置小于1或者大于表长,则位置不合法return 0;e = L.data[i-1];for(int j = i; j<L.length; j++)//删除位之后所有元素前移 L.data[j-1] = L.data[j];L.length–;//表长-1return 1;}4)按值查找int find(Sqlist L,int e){int i;for (i = 0; i < L.length; i++){ if(e==L.data[i]) { return i+1; } else { return 0; }}}4.完整代码#include <stdio.h>#include <stdlib.h>//顺序表定义#define MaxSize 50typedef struct {int data[MaxSize];int length;}Sqlist;//先声明函数void creat(Sqlist &L);//建立线性表void show(Sqlist L);//显示线性表//在指定位置插入数据int insert(Sqlist &L,int i , int e){//在某个位置插入一个元素(成功返回1,失败返回0)if(i<1||i>L.length+1)//如果插入位置小于1或者大于表长+1,则位置不合法return 0;else if(i>=MaxSize)//如果位置大于等于最大表长,则不可插入return 0;else if (i== L.length+1){L.data[L.length] = e;L.length ++;return 1;}else {for(int j = L.length;j>=i;j–)//将插入位置后的所有元素后移{ L.data[j]=L.data[j-1];//这里需注意,数组下标是从0开始的 L.data[i-1] = e;} L.length++;//表长+1 return 1;}}//删除指定位置元素int listdelete(Sqlist &L, int i , int &e){//成功返回1失败返回0if(i<1||i>L.length)//如果删除位置小于1或者大于表长,则位置不合法return 0;e = L.data[i-1];for(int j = i; j<L.length; j++)//删除位之后所有元素前移 L.data[j-1] = L.data[j];L.length–;//表长-1return 1;}//按值查找成功返回位序,失败返回0int find(Sqlist L,int e){int i;for (i = 0; i < L.length; i++){ if(e==L.data[i]) { return i+1; } else { return 0; }}}int main(){Sqlist L;L.length=0;//初始化线性表creat(L);//创建线性表/printf(“在顺序表哪个位置插入元素:\n”);int i,e;scanf("%d",&i);printf(“插入元素值:\n”);scanf("%d",&e);int j = insert(L,i,e);if(j == 1){printf(“插入成功\n”);show(L);//打印线性表元素}else{printf(“插入失败\n”);}printf(“删除第几个位置的数\n”);int h,k;scanf("%d",&h);int temp = listdelete(L, h , k);if(temp == 1){printf(“成功\n”);show(L);//打印线性表元素}else{printf(“失败\n”);}///按值查找int e,temp;printf(“想查找的值:\n”);scanf("%d",&e);temp = find(L,e);if (temp == 0){printf(“失败\n”);}else{ printf(“成功\n”); printf(“该元素位序为%d\n”,temp);}return 0;}//创建void creat(Sqlist &L){int a;printf(“线性表元素总数:\n”);scanf("%d",&a);printf(“依次输入每个元素\n”);for(int i=0;i<a;i++){scanf("%d",&L.data[i]);L.length++;}}//打印void show(Sqlist L){int i;printf(“当前元素:\n”);for(i=0;i<L.length;i++)printf("%d\t",L.data[i]);printf("\n");}5.小结顺序表是最基本及简单的一种数据结构,优点明显(随机访问,算法简单)但缺点很突出,不利于内存优化,不利于动态处理,对于一些对内存要求很高的算法以及动态处理很不适用。