1单链表.docx

上传人:b****6 文档编号:8561816 上传时间:2023-01-31 格式:DOCX 页数:8 大小:39.39KB
下载 相关 举报
1单链表.docx_第1页
第1页 / 共8页
1单链表.docx_第2页
第2页 / 共8页
1单链表.docx_第3页
第3页 / 共8页
1单链表.docx_第4页
第4页 / 共8页
1单链表.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

1单链表.docx

《1单链表.docx》由会员分享,可在线阅读,更多相关《1单链表.docx(8页珍藏版)》请在冰豆网上搜索。

1单链表.docx

1单链表

《单链表的基本操作》实验报告

一、实验目的和要求

1、链表的显示要作为函数被调用

2、把自己使用的单链表结构明确的表达出来

3、基本上实现每个实验题目的要求

二、实验内容和原理

1、由键盘输入的方式给出一组整数,把这些整数存到一个首地址为AH的单链表中

2、把链表中的元素按照降序排列

3、把链表中的数据按照先后顺序显示(要求在显示器可见)

4、插入一个新的整数,使得链表插入后仍然为有序排列。

 

三、软、硬件环境

硬件:

Pentium(R)Dual-coreCPUE5300@2.60Hz

1.99GB

软件:

windowsXP

C++程序设计与试验系统

 

四、实验步骤

1、建立单链表

2、完成排序函数

3、完成插入函数

4、完成删除函数

5、完成输出函数

6、执行函数

#include

usingnamespacestd;

#defineNULL0

structAH

{

intdata;

structAH*next;

};

//*******************************创建链表***************************

AH*creat(intn)

{

AH*head,*p1,*p2;

inti;

for(i=1;i<=n;i++)

{

p1=newAH;

if(i==1)

head=p1;

else

p2->next=p1;

p2=p1;

cin>>p1->data;

}

p1->next=NULL;

p2=p1=NULL;

cout<

returnhead;

}

//****************************排序**********************************

voidorder(structAH*head,intn)

{

structAH*p,*q;

intt;

p=q=head;

for(q=head;q->next!

=NULL;q=q->next)

{

p=q->next;

while(p->next!

=NULL)

{

if(p->data>=q->data)

{

t=p->data;

p->data=q->data;

q->data=t;

}

p=p->next;

}

if(p->data>=q->data)//这完了后,还有一个没有比较呢,再加个if

{

t=p->data;

p->data=q->data;

q->data=t;

}

}

}

//****************************插入函数***************************

voidinsert(structAH*head,inta)

{

structAH*p,*q,*r;

q=head;

r=newAH;

r->data=a;

p=q->next;

while(p->next!

=NULL&&r->datadata)

{

q=q->next;

p=p->next;

}

if(p->next==NULL)

{

r->next=p->next;

p->next=r;

}

else

{

r->next=q->next;

q->next=r;

}

cout<

}

//*********************************删除函数*******************************

intdel(structAH*head,inta)

{

AH*p1,*p2;

intg=1;

p1=p2=head;

while(p1->data!

=a&&p1->next!

=NULL)

{

p2=p1;

p1=p1->next;

}

cout<

if(p1->data!

=a)

g=0;

elseif(p1==head)

{

head=head->next;

p1->next=NULL;

}

elseif(p1->next==NULL)

{

p2->next=p1->next;

}

else

{

p2->next=p1->next;

p1->next=NULL;

}

deletep1;

returng;

}

//********************************输出函数**************************************

voidprint(structAH*head)

{

structAH*p;

p=head;

inti;

for(i=0;p->next!

=NULL;i++)

{

cout<data<<"";

p=p->next;

}

cout<data;

cout<

}

//**************************************************************************

voidmain()

{

structAH*head;

intn;

cout<<"创建单链表AH存储n个数据:

";

cin>>n;

cout<

cout<<"这n个整数分别是:

";

head=creat(n);

cout<<"按从大到小的顺序输出存储的n个数据:

";

order(head,n);

print(head);

cout<

inta;

cout<<"输入你要插入的数据值";

cin>>a;

insert(head,a);

cout<<"排序后的数组为:

";

n=n+1;

order(head,n);

print(head);

cout<

intb;

cout<<"输入你要删除的数据:

";

cin>>b;

del(head,b);

n=n-1;

//order(head,n);

cout<<"删除后的数据:

";

print(head);

cout<

}

 

五、实验结果及分析

显示结果如图所示。

通过反复校验本小组成员发现改程序有两处不完整的地方

1.“创建单链表AH存储n个数据”的个数必须是大于1个的。

“输入要删除的数据”的必须是前面输入的某个数,如果该数据前面没出现,则执行不能完全完成。

因为主函数中有此句:

n=n-1;order(head,n);,要删除的数如果不存在则n就没能减1,排序出错。

由于学期末时间紧,未能完善,小组成员之后将再将其完善。

 

六、实验总结

通过本次编程,学会了单链表的实现方法和有关的数据类型定义。

在实现链表的基本操作的过程中,复习和巩固了C++语言中的基本语句的使用方法,程序的规范写法,尤其是定义插入、排序等函数时if···else···判断语句的嵌套和for语句的双重循环控制等理解的更加深入。

相信在以后的编程时应用这些判断和控制语句会更加得心应手。

总之实验过程中不仅认识,掌握了新知识还巩固了基础,使自己的编程能力有了一定的提高。

编程能力更大的提升还需要大量的编写和反复的练习重复,下去之后自己再努力练习。

 

七、教师评语和成绩

教师签名:

年月日

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1