- 7
- 0
- 约3.61千字
- 约 7页
- 2018-05-28 发布于河南
- 举报
实验报告(单链表)
院 系: 计算机科学学院
专 业: 自动化
年 级: 2009级
课程名称: 计算机软件技术基础
学 号:
姓 名:
指导教师: 吴立锋
2010年 11 月 25 日
年级 ? 2009 班号 ?2班 组号 ?学号 专业 自动化 ?姓名 ? 实验名称 ?线性表 实验室 ?9#205 实
验
目
的
或
要
求 ?了解线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在某种存储结构上如何实现这些基本运算。在熟悉上述内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。
实
验
原
理
(
算
法
流
程
) 1、实验内容
用C/C++语言编写程序,完成以下功能:
(1)运行时输入数据,创建一个单链表
(2)可在单链表的任意位置插入新结点
(3)可删除单链表的任意一个结点
(4)在单链表中查找所有值等于x的结点
(5)输出单链表
要求:自定义结点结构,程序模块清晰。
?
2、存储结构描述及说明
typedef struct linknode
{ int data;
struct linknode *next;
}node;
单链表可以有头指针唯一确定
3、函数说明
(1)创建单链表
①函数原型:node *creat()
②函数功能:创建一个单链表,并用将其头结点用*headfan返回。
(2)输出单链表
①函数原型:void print()
②函数功能:输出已建立的单链表中的元素。
实 验 原 理(算 法 流 程) (3)查找数据;
①函数原型:void find()
②函数功能:在单链表中查找值为x的结点。
(4)插入结点:
①函数原型:void insert()
②函数功能:在已建立的单链表中插入值为x的结点。
(5)删除结点;
①函数原型:void del()
②函数功能:在已建立的单链表中删除值为x的结点
(5)主函数;
①函数原型:void main()
②函数功能:调用其他的函数。
4、模块之间的调用关系
组
内
分
工
(
可
选
) 实
验
结
果
分
析
及
心
得
体
会 实验结果分析:本次实验中遇到很多的问题:输出的时候无法输出第一个结点元素、查找时怎么输入都找不到元素、删除的时候不能删除第一个结点等。经过对课本知识的深入研究以及向老师请教,终于将问题一一改正,从而使程序能够正常运行。
心得体会:此次实验让我感到自己的C语言知识掌握尚不熟练,以后还要多加巩固,通过多写程序来提高自己的编程能力,在遇到问题的时候不要立刻去找老师解决,要自己先动脑筋想想,仔细检查程序有没有错误,只有自己检查出来的错误才能印象深刻,实在搞不懂的再向老师请教,改正之后要牢记心中。我也感觉到单链表的重要性,单链表是编写其很多程序的基础,所有自己要认真学习单链表的相关知识,把基础打牢。 成
绩
评
定
教师签名:
年 月 日
#includestdio.h
#includestdlib.h
typedef struct linknode
{
int data;
struct linknode *next;
}node;
node *creat()
{
node *head,*p,*s;
int x,cycle=1;
head=(node*)malloc(sizeof(node));
p=head;
while(cycle)
{
scanf(%d,x);
if(x!=0)
{
s=(node*)malloc(sizeof(node));
s-data=x;
p-next=s;
p=s;
}
else cycle=0;
}
p-next=NULL;
p=head;
head=head-next;
free(p);
return head;
}
void print(node *head)
{
node *p;
p=head;
while(p)
{
printf(%d ,p-data);
p = p-next;
}
原创力文档

文档评论(0)