以下程序实现顺序表的基本操作定义和初始化//符号常量的定义 #define OK 1#define ERROR 0#define MAXSIZE 100#define overflow -2typedef int status; //函数返回类型默认为int typedef int Elemtype;//数据元素类型默认为int /**********************************************************///顺序表的结构体定义;/**********************************************************/typedef struct{Elemtype elem[MAXSIZE];//采用数组来实现顺序表元素的存储 int length;}Sqlist;/********************************************************///顺序表中函数声明/*******************************************************///(1)顺序表的初始化定义;status InitList(Sqlist &L);//(2)顺序表的查找操作,成功就返回找到元素的位序,否则返回0;int LocateElem(Sqlist L,Elemtype e);//(3)向顺序表的第i个元素前插入元素e;status ListInsert(Sqlist &L,int i,Elemtype e);//(4)输出顺序表中的元素;void PrintList(Sqlist L);//(5)删除顺序表中的第i个元素;status ListDelete(Sqlist &L,int i,Elemtype &e);//(6)取出顺序表中的第i个元素;status GetElem(Sqlist L,int i, Elemtype &e);//(7)求出元素的前驱 ;status PriorElem(Sqlist L,Elemtype cur_e,Elemtype &pre);/********************************************************///以上为顺序表的基本操作定义/*******************************************************/ //(1)顺序表的初始化定义;status InitList(Sqlist &L){// TODO (#1#): 创建空表 L.length=0;return OK;}//(2)顺序表的查找操作,成功就返回找到元素的位序,否则返回0;int LocateElem(Sqlist L,Elemtype e){ // TODO (#2#): 在顺序表中查找元素 //找到e在顺序表中的位序 ,即查找成功 //若e不存在于顺序表中,即查找失败 int i = 1; while (( i<=L.length)&&(L.elem[i-1] !=e)) ++i;if (i <= L.length) return i;else return 0; }//(3)向顺序表的第i个元素前插入元素e;//注意此时从最后一个元素到第i个元素都要顺次后移。status ListInsert(Sqlist &L,int i,Elemtype e){ // TODO (#3#): 向表中插入元素 //插入位置合法作插入操作 //从最后一个元素开始移动元素,空出插入位置 //待插入元素作插入操作 //顺序表长度增加 if (i<1 i="">L.length+1||L.length==MAXSIZE) return ERROR; // 插入位置不合法for ( int j= L.length ; j>=i ; j-- )L.elem[j]=L.elem[j-1]; // 插入位置及之后的元素右移L.elem[i-1] = e ; // 插入e++L.length; // 表长增1return OK;}//(4)输出顺序表中的元素;void PrintList(Sqlist L){ // TODO (#4#): 输出顺序表中的元素for(int i=0;i<L.length;i++){printf("%5d",L.elem[i]);}}//(5)删除顺序表中的第i个元素;status ListDelete(Sqlist &L,int i,Elemtype &e){// TODO (#5#)://删除位置合法作删除操作 //删除元素之前保存被删除的元素 //从i+1个元素开始移动元素做删除操作,此时注意移动的方向 //顺序表的长度减少 if(L.length==0 || i<1 i="">L.length) return ERROR; e=L.elem[i-1]; //取第i个元素赋值给e for (int j=i; j<L.length; j++)L.elem[j-1]=L.elem[j];L.length--;return OK;}//(6)取出顺序表中的第i个元素;status GetElem(Sqlist L,int i, Elemtype &e){// TODO if (i<=0 || i>L.length) return ERROR; else{ e=L.elem[i-1];return OK;}}//(7)求出元素的前驱 ;status PriorElem(Sqlist L,Elemtype cur_e,Elemtype &pre){// TODO (#7#)://第一个数据元素没有前驱 int i = 1; // i 的初值为第 1 元素的位序 while ((i>1) && (i<=L.length) && (L.elem[i-1] !=cur_e)) ++i; if ((i > 1) && (i <= L.length)) { pre=L.elem[i-2]; return OK; } else return 0; }</1></1>
以下程序实现顺序表的基本操作定义和初始化//符号常量的定义 #define OK 1#defi