1、 基本操作: InitList(List *L,int ms) 操作前提:L是一个未初始化的顺序表 操作结果:将L初始化为一个空的顺序表,长度为ms 1nsertList(List *L,int item,int rc)/*在表L的第rc位置上 顺序表L已存在在表L的第rc位置上插入item元素 DeleteListl(List *L,int item)删除item元素的顺序表记录 DeleteList2(List *L,int rc)删除位置为rc的顺序表记录 FindList(List L,int item)查找顺序表中的item元素 OutputList(List L) 输出顺序表元素
2、(2)本程序包含7个函数: 主函数main() 初始化线性表 InitList(List *L,int ms) 向顺序表指定位置插入元素 1nsertList(List *L,int item,int rc)/ 删除指定元素值的顺序表记录 DeleteListl(List *L,int item) 删除指定位置的顺序表记录 DeleteList2(List *L,int rc) 查找顺序表中的元素 FindList(List L,int item) 输出顺序表元素 OutputList(List L) 各函数间调用关系:主函数调用其他所以函数。(3)主函数的伪玛 main() 声明其他函数;
3、定义变量和顺序表L; 初始化L; 向L插入10个元素; 显示L; 输入要查找元素的值; 调用FindList(List L,int item); 输出结果; 输入要删除元素的值; 调用 DeleteListl(List *L,int item);输出结果; 输入要删除元素的位置; 调用 DeleteList2(List *L,int rc); 4详细设计类型定义typedef struct LinearList int *list; int size; int MAXSIZE;List;基本操作的伪码算法初始化void InitList(List *L,int ms)*L=请结点如果申请失败则
4、退出; L-size=0;MAXSIZE=ms;向顺序表指定位置插入元素int InsertList( List *L,int item,int rc)如果rc小于0或大于顺序表元素的个数则返回-1;如果L的元素个数大于L的最大数则返回-1;listrc=item;for(i=L-size;irc;-i)从第i位开始,前面一个元素向后移动一位;L的元素个数增加一个;删除指定元素值的顺序表记录int DeleteList1(List *L,int item)for(i=0;ii+)如果item=L-listi则退出循环;如果isizefor(j=i;jlistj=L-listj+1;;size减
5、1;返回i的值;Else 返回-1;删除指定位置的顺序表记录int DeleteList2(List *L,int rc)如果rc=L-size则返回-1;for(j=rc-1; L-查找顺序表中的元素int FindList(List L,int item)定义整形变量i=0;当i小于等于L.size或item不等于L.listi)i自增1;如果i小于等于L.size 返回i;否则返回0; void OutputList(List L)定义整形变量i;for(i=0;L.size; 输出L.listi;输出换行符;5调试分析 在主函数中定义list型指针变量L,并调用函数 InitList(
6、List *L,int ms);调试是会出现error:expression cannot be evaluated。重新定义list型变量L,并将&L作为参数带入函数中便可以解决。6使用说明程序执行过程如下:提示用户输入要查找的值;用户按要求输入一个正整数;程序输出查找值的位置;程序输出顺序表元素;提示用户输入要删除的值;程序输出删除元素的位置;提示用户输入要删除元素的位置;用户按要求输入;按任意键退出程序;7测试结果1.向顺序表指定位置插入元素2.在顺序表中查找指定的元素3.在顺序表中删除指定值的元素4.在顺序表中删除指定位置的元素8. 参考文献9附录#includestdlib.hmal
7、loc.htypedef struct LinearList int MaxSize;LIST;void InitList( LIST *L, int ms ) if(L-list=(int *)malloc(ms *sizeof(int)=NULL) printf( 内存申请错误!n ); exit( 1 ); MaxSize = ms;int InsertList( LIST *L, int item, int rc ) int i; if( L-size MaxSize ) return -1; if( rc size ) rc = L- for( i = L-size - 1; i =
8、 rc; i- ) listi+1=L-listi;listrc = item;size +; return 0;int DeleteList1( LIST *L, int item ) int i, n; for( i = 0; i listi ) break; if( i size ) for( n = i; n listn = L-listn+1; L-size -; return i; return -1;int DeleteList2( LIST *L, int rc ) int i,n;if(rcsize) break;for(n=i;nsize-;return i;return
9、-1;int FindList( LIST *L, int item ) int i; if( L-listi=item ) return i; void OutputList( LIST *L ) ilisti ); printf( int main() LIST LL; int i, r; InitList( &LL, 100 ); while( 1 )请输入元素值,输入0结束插入操作: fflush( stdin ); scanf( %d, &i ); if( i=0 ) break;请输入插入位置:r ); InsertList( &LL,i,r );线性表为: OutputList( &LL ) ;请输入查找元素值,输入0结束查找操作: if( i = 0 ) r = FindList( &LL, i ); if( r 0 ) printf( 没找到n else有符合条件的元素,位置为:%dn, r+1 );请输入删除元素值,输入0结束查找操作: r = DeleteList1( & else %dn线性表为: OutputList( &LL );请输入删除元素位
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1