数据结构01线性表的基本操作

发布 2019-07-09 03:50:15 阅读 9507

院系专业。

姓名___林桢曦学号_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 掌握顺序表的存储结构形式及其描述和基本运算的实现。二 实验内容。问题描述 实现顺序表的建立 求长度,取元素 修改元素 ...