数据结构实验1线性表的基本操作.docx

上传人:b****2 文档编号:17951822 上传时间:2023-08-05 格式:DOCX 页数:9 大小:34.69KB
下载 相关 举报
数据结构实验1线性表的基本操作.docx_第1页
第1页 / 共9页
数据结构实验1线性表的基本操作.docx_第2页
第2页 / 共9页
数据结构实验1线性表的基本操作.docx_第3页
第3页 / 共9页
数据结构实验1线性表的基本操作.docx_第4页
第4页 / 共9页
数据结构实验1线性表的基本操作.docx_第5页
第5页 / 共9页
数据结构实验1线性表的基本操作.docx_第6页
第6页 / 共9页
数据结构实验1线性表的基本操作.docx_第7页
第7页 / 共9页
数据结构实验1线性表的基本操作.docx_第8页
第8页 / 共9页
数据结构实验1线性表的基本操作.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构实验1线性表的基本操作.docx

《数据结构实验1线性表的基本操作.docx》由会员分享,可在线阅读,更多相关《数据结构实验1线性表的基本操作.docx(9页珍藏版)》请在冰点文库上搜索。

数据结构实验1线性表的基本操作.docx

数据结构实验1线性表的基本操作

实验1线性表的基本操作

一、需求分析

目的:

掌握线性表运算与存储概念,并对线性表进行基本操作。

1.初始化线性表;

2.向链表中特定位置插入数据;

3.删除链表中特定的数据;

4.查找链表中的内容;

5.销毁单链表释放空间;

二、概要设计

●基础题

主要函数:

初始化线性表InitList(List*L,intms)

向顺序表指定位置插入元素InsertList(List*L,intitem,intrc)

删除指定元素值的顺序表记录DeleteList1(List*L,intitem)

删除指定位置的顺序表记录DeleteList2(List*L,intrc)

查找顺序表中的元素FindList(ListL,intitem)

输出顺序表元素OutputList(ListL)

实验步骤:

1,初始化顺序表

2,调用插入函数

3,在顺序表中查找指定的元素

4,在顺序表中删除指定的元素

5,在顺序表中删除指定位置的元素

6,遍历并输出顺序表

●提高题

要求以较高的效率实现删除线性表中元素值在x到y(x和y自定义)之间的所有元素

方法:

按顺序取出元素并与x、y比较,若小于x且大于y,则存进新表中。

编程实现将两个有序的线性表进行合并,要求同样的数据元素只出现一次。

方法:

分别按顺序取出L1,L2的元素并进行比较,若相等则将L1元素放进L中,否则将L1,L2元素按顺序放进L。

●本程序主要包含7个函数

主函数main()

初始化线性表InitList(List*L,intms)

向顺序表指定位置插入元素InsertList(List*L,intitem,intrc)

删除指定元素值的顺序表记录DeleteList1(List*L,intitem)

删除指定位置的顺序表记录DeleteList2(List*L,intrc)

查找顺序表中的元素FindList(ListL,intitem)

输出顺序表元素OutputList(ListL)

提高题的程序

voidCombine(List*L1,List*L2,List*L)

voidDeleteList3(List*L,intx,inty)

二、详细设计

初始化线性表InitList(List*L,intms)

voidInitList(List*L,intms)

{

L->list=(int*)malloc(LIST_INIT_SIZE*sizeof(int));

L->size=0;

L->MAXSIZE=LIST_INIT_SIZE;

}

向顺序表指定位置插入元素InsertList(List*L,intitem,intrc)

voidInsertList(List*L,intitem,intrc)

{

inti;

if(L->size>=L->MAXSIZE)

{

L->list=(int*)realloc(L->list,(L->MAXSIZE+LISTI)*sizeof(int));

 

L->MAXSIZE+=LISTI;

}

for(i=L->size-1;i>=rc-1;i--)

{

L->list[i+1]=L->list[i];

}

L->list[rc-1]=item;

L->size++;

}

删除指定元素值的顺序表记录DeleteList1(List*L,intitem)

voidDeleteList1(List*L,intitem)

{

inti,j;

for(i=0;isize;i++)

{

if(L->list[i]==item)

{

break;

}

}

for(j=i;jsize;j++)

{

L->list[j]=L->list[j+1];

}

L->size--;

}

删除指定位置的顺序表记录DeleteList2(List*L,intrc)

voidDeleteList2(List*L,intrc)

{

inti;

for(i=rc-1;isize;i++)

{

L->list[i]=L->list[i+1];

}

L->size--;

}

查找顺序表中的元素

voidFindList(List*L,intitem)

{

inti;

for(i=0;isize;i++)

{

if(L->list[i]==item)

break;

}

if(L->size==i)

{

printf("找不到\n");

}

else

{

printf("第%d个元素为%d\n",i+1,item);

}

}

输出顺序表元素OutputList(ListL)

voidOutputList(List*L)

{

inti;

for(i=0;isize;i++)

{

printf("%d",L->list[i]);

}

printf("\n");

}

删除x到y之间的所有元素

voidDeleteList3(List*L,intx,inty)

{

inti,j,temp;

if(x>y)

{

temp=x;

x=y;

y=temp;

}

for(i=0,j=0;isize;i++)

{

if(L->list[i]list[i]>y)

{

L->list[j]=L->list[i];

j++;

}

}

L->size=j;

}

将两个有序的线性表进行合并

voidCombine(List*L1,List*L2,List*L)

{

inti,j,k,temp;

if(L1->size>L2->size)

{

temp=L2->size;

}

else

{

temp=L1->size;

}

i=0,j=0,k=0;

while

(1)

{

if(i==L1->size||j==L2->size)

break;

if(L1->list[i]list[j])

{

L->list[k]=L1->list[i];

k++;

i++;

}

elseif(L1->list[i]>L2->list[j])

{

L->list[k]=L2->list[j];

k++;

j++;

}

else

{

L->list[k]=L2->list[j];

k++;

j++;

i++;

}

}

if(i==L1->size)

{

for(i=j;isize;i++,k++)

{

L->list[k]=L2->list[i];

}

}

else

{

for(j=i;jsize;j++,k++)

{

L->list[k]=L1->list[j];

}

}

L->size=k;

}

三、调试分析

体会:

线性表内数据都是顺序排放所以实验中比较容易写出程序

时间复杂度:

初始化线性表InitList(List*L,intms)⊙

(1)

向顺序表指定位置插入元素InsertList(List*L,intitem,intrc)⊙(n)

删除指定元素值的顺序表记录DeleteList1(List*L,intitem)⊙(n)

删除指定位置的顺序表记录DeleteList2(List*L,intrc)⊙(n)

查找顺序表中的元素FindList(ListL,intitem)⊙(n)

输出顺序表元素OutputList(ListL)⊙(n)

删除x到y之间的所有元素⊙(n)

将两个有序的线性表进行合并⊙(n)

四、调试与结果测试

继续阅读

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2