计算机软件基础实验报告2Word文件下载.docx
- 文档编号:6769289
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:16
- 大小:95.74KB
计算机软件基础实验报告2Word文件下载.docx
《计算机软件基础实验报告2Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机软件基础实验报告2Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
(2)熟练掌握线性表的链式存储结构。
(3)熟练掌握线性表在链式存储结构上的运算。
2.实验内容
(1)编写算法,根据用户输入的整数创建一个带头结点的单链表,-1作为输入数据的结束符。
测试要求:
建立空链表、非空链表的情况下测试程序运行情况。
(2)编写算法,在带有头结点的单链表中查找序号为i的结点和值为x的结点并输出。
在空链表、i与x在链表头、i与x在链表尾、i与x在链表中间、i与x在链表中不存在的情况下测试程序运行情况。
(3)己知单链表中的元素非递减有序排列,编写算法删除单链表中值相同的多余的元素。
在空链表、有1组相同元素、有2组连续相同元素、有2组以上不连续相同元素的情况下测试程序运行情况。
(4)已知单链表中的数据元素递增有序,编写算法,给定的两个数据Min和Max,删除表中值在min与max之间的结点。
在空链表、max小于链表第1个元素值、min大于链表最后1个元素值、min与max在链表中间的情况下测试程序运行情况。
二、原理(条件)
VisualC++6.0
三、内容与步骤
测试数据为:
10,9,8,7,6,5,4,3,2,1
主函数内的代码:
linklist*createlist()
{
intt;
linklist*head,*s,*r;
//s为新建结点,r为尾结点
head=(linklist*)malloc(sizeof(linklist));
//开辟空间,建立一个头结点
r=head;
printf("
请输入数字序列,产生单链表,以-1结束。
\n"
);
scanf("
%d"
&
t);
while(t!
=-1)
{
s=(linklist*)malloc(sizeof(linklist));
s->
data=t;
r->
next=s;
r=s;
scanf("
}
r->
next=NULL;
returnhead;
}
运行结果:
(2)编写算法,在带有头结点的单链表中查找序号为i的结点和值为x的结点并输出。
voidfindi(linklist*head)//查找结点为i的值
linklist*p,*q;
inti=0,j=0;
输入要查找的结点:
i);
if(i==1)
q=head->
next;
else
{
p=head->
j=1;
while(p!
=NULL)
{
p=p->
j++;
if(i==j)
{
q=p;
break;
}
}
if(p==NULL)
printf("
超出范围,不存在"
查找的元素为:
"
%d\n"
q->
data);
测试数据:
查找结点为3的值
voidfindx(linklist*head)//查找值为x的结点
linklist*p;
intch;
intj=0;
请输入要查找的数值:
ch);
p=head->
j=1;
while(p!
=NULL&
&
p->
data!
=ch)
p=p->
j++;
你所输入的值不存在!
第%d个元素为%d\n"
j,p->
查找值为3的值
(3)己知单链表中的元素非递减有序排列,编写算法删除单链表中值相同的多余的元素。
linklist*deld(linklist*head)//删除连续相同元素
删除后链表为:
while(p->
next!
q=p->
if(p->
data==q->
data)
p->
next=q->
free(q);
q=q->
1245787896
10111125262828353648
5568910111212353865657889
linklist*del2(linklist*head)//删除链表中的min与max之间的元素
linklist*p,*q1,*q2=NULL;
intmax=0,min=0;
请输入min和max\n"
%d%d"
min,&
max);
if(head->
next==NULL)
returnhead;
next->
data>
max)
elsep=head;
data<
=min)
p=p->
else
q1=p->
q2=q1->
while(q2!
q2->
q2=q2->
next=q2;
while(q1!
=q2)
p=q1;
q1=q1->
free(p);
121518234578
min为15max为23
四、完整程序
#include<
stdio.h>
//printf和scanf提供头文件
stdlib.h>
//malloc和free提供头文件
typedefintdatatype;
//定义数据元素的类型,命名为datatype
typedefstructnode
datatypedata;
structnode*next;
}linklist;
//定义结点类型,命名为linklist
voidprintnode(linklist*head)//输出程序
linklist*r;
r=head->
if(r==NULL)
输入为空\n"
while(r!
%d\t"
r->
r=r->
\n输出结束\n"
voidmain()
五、结论
通过此次试验了解的链表的创建,运用了链表的删除和查找功能的实用。
也更加强和巩固了C语言中构造函数的运用。
六、评语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 基础 实验 报告