院系专业。
姓名___林桢曦学号_235**。
级班年___月___日。
要求建立一个顺序表,然后能够在顺序表中插入,删除,查找指定元素并且输出顺序表的各元素。
1)初始化顺序表。
2)调用插入函数建立一个顺序表。
3)在顺序表中查找指定的元素。
4)在顺序表中删除指定值的元素。
5)在顺序表中删除指定位置的元素。
6)遍历并输出顺序表。
输入形式为:整型数;
输出形式:如果数值合法,则输出对应的整型数,并输出各元素的值;
adt linearlist
结构关系:r=
基本操作: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)
操作前提:顺序表l已存在。
操作结果:删除item元素的顺序表记录
deletelist2(list *l,int rc)
操作前提:顺序表l已存在。
操作结果:删除位置为rc的顺序表记录
findlist(list l,int item)
操作前提:顺序表l已存在。
操作结果:查找顺序表中的item元素
outputlist(list l
操作前提:顺序表l已存在。
操作结果:输出顺序表元素
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()
声明其他函数;
定义变量和顺序表l;
初始化l;向l插入10个元素;
显示l;输入要查找元素的值;
调用findlist(list l,int item);
输出结果;输入要删除元素的值;
调用 deletelistl(list *l,int item);输出结果;
显示l;输入要删除元素的位置;
调用 deletelist2(list *l,int rc);输出结果;
显示l;类型定义。
typedef struct linearlist
int *list;
int size;
int maxsize;
list;基本操作的伪码算法。
初始化。void initlist(list *l,int ms)
l=请结点。
如果申请失败则退出;
l->size=0;
l->maxsize=ms;
向顺序表指定位置插入元素。
int insertlist( list *l,int item,int rc)
如果rc小于0或大于顺序表元素的个数则返回-1;
如果l的元素个数大于l的最大数则返回-1;
l->list[rc]=item;
for(i=l->size;i>rc;--i)
从第i位开始,前面一个元素向后移动一位;l的元素个数增加一个;}
删除指定元素值的顺序表记录。
int deletelist1(list *l,int item)
for(i=0;isize;i++)
如果item==l->list[i]则退出循环;}
如果isize
for(j=i;jsize-1;j++)
从j开始 l->list[j]=l->list[j+1];;
l->size减1;
返回i的值;
else 返回-1;
删除指定位置的顺序表记录。
int deletelist2(list *l,int rc)
如果rc<0||rc>=l->size则返回-1;
for(j=rc-1;jsize-1;j++)
l->list[j]=l->list[j+1];
l->size减1;
查找顺序表中的元素。
int findlist(list l,int item)
定义整形变量i=0;
当i小于等于或item不等于自增1;
如果i小于等于 返回i;
否则返回0;
输出顺序表元素
void outputlist(list l)
定义整形变量i;
for(i=0;i<
{输出。输出换行符;
在主函数中定义list型指针变量l,并调用函数 initlist(list *l,int ms);调试是会出现error:expression cannot be evaluated。重新定义list型变量l,并将&l作为参数带入函数中便可以解决。
程序执行过程如下:
提示用户输入要查找的值;
用户按要求输入一个正整数;
程序输出查找值的位置;
程序输出顺序表元素;
提示用户输入要删除的值;
用户按要求输入一个正整数;
程序输出删除元素的位置;
程序输出顺序表元素;
提示用户输入要删除元素的位置;
用户按要求输入;
程序输出顺序表元素;
按任意键退出程序;
(列出参考的相关资料和书籍。)
#include<>
#include<>
typedef struct linearlist
int *list;
int size;
int maxsize;
list;void main()
void initlist(list *l,int ms);
int insertlist( list *l,int item,int rc);
int deletelist1(list *l,int item);
int deletelist2(list *l,int rc);
int findlist(list l,int item);
void outputlist(list l);
list l;
int i,a;
initlist(&l,100);
printf("线性表的长度为%d,存放数组元素个数最大值为%d",for(i=0;i<10;i++)
printf("此时顺序表为:")
outputlist(l);
printf("请输入要查找元素的值");
scanf("%d",&i);
a=findlist(l,i);
printf("要查找的元素的位置是第%d个",a+1);
printf("请输入要删除元素的值");
scanf("%d",&i);
a=deletelist1(&l,i);
printf("要删除的元素的位置是第%d个",a+1);
printf("此时顺序表为:")
outputlist(l);
printf("请输入要删除元素的位置");
scanf("%d",&i);
deletelist2(&l,i);
printf("此时顺序表为:")
outputlist(l);
void initlist(list *l,int ms)
l->list=(int*)malloc(ms*sizeof(int));
if(!l->list)exit(1);
l->size=0;
l->maxsize=ms;
int insertlist( list *l,int item,int rc)
int i;
if(rc<0||rc>l->size+1)return -1;
if(l->size>=l->maxsize)
return -1;
l->list[rc]=item;
for(i=l->size;i>rc;--i)
++l->size;
int deletelist1(list *l,int item)
int i,j;
for(i=0;isize;i++)
if(item==l->list[i])
数据结构作业 线性表
1简述以下算法的功能 1 statusa linkedlistl p next q p q q p next 当相邻元素相等时删除多余元素。else while delete equal void reverse sqlist a 顺序表的就地逆置。for i 1,j reverse void li...
数据结构习题2线性表
1.一个向量 即一批地址连续的存储单元 第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是 a.110 b.108 c.100 d.120 2.线性表的顺序存储结构是一种 的存储结构,而链式存储结构是一种 的存储结构。a 随机存取 b 索引存取 c 顺序存取 d 散列存取。3.线...
数据结构实验报告 2 1 线性表 顺序表实现
实验2.1 线性表 顺序表实现 的基本操作及其应用。一 实验目的。1 帮助读者复习c语言程序设计中的知识。2 熟悉线性表的逻辑结构。3 熟悉线性表的基本运算在顺序表结构上的实现。4 掌握顺序表的存储结构形式及其描述和基本运算的实现。二 实验内容。问题描述 实现顺序表的建立 求长度,取元素 修改元素 ...