数据结构01线性表的基本操作Word文件下载.docx
《数据结构01线性表的基本操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构01线性表的基本操作Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
基本操作:
InitList(List*L,intms)
操作前提:
L是一个未初始化的顺序表
操作结果:
将L初始化为一个空的顺序表,长度为ms
1nsertList(List*L,intitem,intrc)/*在表L的第rc位置上
顺序表L已存在
在表L的第rc位置上插入item元素
DeleteListl(List*L,intitem)
删除item元素的顺序表记录
DeleteList2(List*L,intrc)
删除位置为rc的顺序表记录
FindList(ListL,intitem)
查找顺序表中的item元素
OutputList(ListL)
输出顺序表元素
}
(2)本程序包含7个函数:
主函数main()
初始化线性表InitList(List*L,intms)
向顺序表指定位置插入元素1nsertList(List*L,intitem,intrc)/
删除指定元素值的顺序表记录DeleteListl(List*L,intitem)
删除指定位置的顺序表记录DeleteList2(List*L,intrc)
查找顺序表中的元素FindList(ListL,intitem)
输出顺序表元素OutputList(ListL)
各函数间调用关系:
主函数调用其他所以函数。
(3)主函数的伪玛
main()
{声明其他函数;
定义变量和顺序表L;
初始化L;
向L插入10个元素;
显示L;
输入要查找元素的值;
调用FindList(ListL,intitem);
输出结果;
输入要删除元素的值;
调用DeleteListl(List*L,intitem);
输出结果;
输入要删除元素的位置;
调用DeleteList2(List*L,intrc);
}
4.详细设计
类型定义
typedefstructLinearList
{
int*list;
intsize;
intMAXSIZE;
}List;
基本操作的伪码算法
初始化
voidInitList(List*L,intms)
{
*L=请结点
如果申请失败则退出;
L->
size=0;
MAXSIZE=ms;
}
向顺序表指定位置插入元素
intInsertList(List*L,intitem,intrc)
如果rc小于0或大于顺序表元素的个数则返回-1;
如果L的元素个数大于L的最大数则返回-1;
list[rc]=item;
for(i=L->
size;
i>
rc;
--i)
{从第i位开始,前面一个元素向后移动一位;
L的元素个数增加一个;
删除指定元素值的顺序表记录
intDeleteList1(List*L,intitem)
{for(i=0;
i<
L->
i++)
{如果item==L->
list[i]则退出循环;
如果i<
size
{for(j=i;
j<
size-1;
j++)
{从j开始L->
list[j]=L->
list[j+1];
;
size减1;
返回i的值;
Else返回-1;
删除指定位置的顺序表记录
intDeleteList2(List*L,intrc)
{如果rc<
0||rc>
=L->
size则返回-1;
for(j=rc-1;
{L->
查找顺序表中的元素
intFindList(ListL,intitem)
{定义整形变量i=0;
当i小于等于L.size或item不等于L.list[i])i自增1;
如果i小于等于L.size返回i;
否则返回0;
voidOutputList(ListL)
{定义整形变量i;
for(i=0;
L.size;
{输出L.list[i];
输出换行符;
5.调试分析
在主函数中定义list型指针变量L,并调用函数InitList(List*L,intms);
调试是会出现error:
expressioncannotbeevaluated。
重新定义list型变量L,并将&
L作为参数带入函数中便可以解决。
6.使用说明
程序执行过程如下:
提示用户输入要查找的值;
用户按要求输入一个正整数;
程序输出查找值的位置;
程序输出顺序表元素;
提示用户输入要删除的值;
程序输出删除元素的位置;
提示用户输入要删除元素的位置;
用户按要求输入;
按任意键退出程序;
7.测试结果
1.向顺序表指定位置插入元素
2.在顺序表中查找指定的元素
3.在顺序表中删除指定值的元素
4.在顺序表中删除指定位置的元素
8.参考文献
9.附录
#include<
stdio.h>
stdlib.h>
malloc.h>
typedefstructLinearList
intMaxSize;
}LIST;
voidInitList(LIST*L,intms)
if((L->
list=(int*)malloc(ms*sizeof(int)))==NULL)
{
printf("
内存申请错误!
\n"
);
exit
(1);
}
MaxSize=ms;
intInsertList(LIST*L,intitem,intrc)
{
inti;
if(L->
size>
MaxSize)
return-1;
if(rc<
0)
rc=0;
if(rc>
size)
rc=L->
for(i=L->
size-1;
i>
=rc;
i--)
list[i+1]=L->
list[i];
list[rc]=item;
size++;
return0;
intDeleteList1(LIST*L,intitem)
inti,n;
for(i=0;
i<
i++)
if(item==L->
list[i])
break;
if(i<
size){
for(n=i;
n<
n++)
L->
list[n]=L->
list[n+1];
L->
size--;
returni;
return-1;
intDeleteList2(LIST*L,intrc)
inti,n;
if(rc<
size)
break;
for(n=i;
n<
n++)
list[n]=L->
size--;
returni;
return-1;
intFindList(LIST*L,intitem)
inti;
if(L->
list[i]==item)
returni;
voidOutputList(LIST*L)
i<
size;
i++)
%d"
L->
list[i]);
printf("
intmain()
LISTLL;
inti,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
有符合条件的元素,位置为:
%d\n"
r+1);
请输入删除元素值,输入0结束查找操作:
r=DeleteList1(&
else{
%d\n线性表为:
OutputList(&
LL);
请输入删除元素位