c语言程序设计实训报告 链表操作
更新时间:2023-09-28 17:26:01 阅读量: 综合文库 文档下载
???????学院
C语言程序设计实训报告
姓 名 专 业 班 级 指导教师
二0一一 年 月 七 日
1
目录
一 试验目的和要求 ····································································································································· 3
1实验目的 ············································································································································· 3 2实验要求 ············································································································································· 3 二 运行环境 ················································································································································ 3 三 实训内容 ·················································································································································· 4
1. 程序的逻辑框图 ··························································································································· 4 3.设计说明 ············································································································································· 4
<1>初始化函数 ······························································································································ 5 <2>求表长 ······································································································································ 5 <3>按序号查找元素 ······················································································································· 5 <4>删除元素 ·································································································································· 5 <5>插入元素 ·································································································································· 5 <6>按值查找元素 ··························································································································· 5
四 实验数据和结果分析 ····························································································································· 6
1.实验数据 ············································································································································· 6 2.结果分析 ············································································································································· 6 五 心得体会 ·············································································································································· 7 六 附录 1 ······················································································································································ 8 七 附录 2 ······················································································································································ 9
2
一 试验目的和要求
1实验目的
本实训是软件技术专业重要的实践性环节之一,是在学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。本实训的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C语言解决实际问题的能力
2实验要求
1. 分析实训题目的要求 2. 写出详细设计说明
3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交实训报告
二 运行环境
本程序可以在98/2000/XP下运行,可以用VC++6.0执行
3
三 实训内容
1. 程序的逻辑框图
窗口初始化 输入数据 输出表长 选择功能 功能判断 调用 相应的函数 根据所选功能执行相应操作 结束 2.使用说明
先输入要输入数据的个数,然后依次的收入数据。程序会自动计算生成表长,然后弹出功能选择框,选择相应的功能即可完成操作。
3.设计说明
应用顺序表的链式存储结构。主要功能为输入输出数据,删除数据,插入数据,按值查找数据,按序号查找数据。
4
<1>初始化函数
说明一个变量head为linklist类型;调用malloc(sizeof(lnode)从而得到一个类型为node的结点,并将该结点的链域置为null。
<2>求表长
说明一个与head同类型的(指针型)变量p作为“指点”工具,在设计一个整型变量i作为计数器,初始时,置p指向头结点,应继续往下“点数”。“点数”可通过以下两操作实现,一个是p“后移”操作p=p->next;另一个是i值加一操作,这相当于“报数”。当p->next==NULL时说明*p是尾结点,“点数”完毕且这时i值正好是表长。
<3>按序号查找元素
在链表中从头指针出发,顺链域next逐个往下搜索,直到找到第i个结点为止,容易看出,此运算区别在于不是从头结点一直数到尾结点,而是数到第i个 结点(存在第i个结点的话)。在算法执行过程中,变量j的值始终是p所指结点的序号(初始值p指头结点,j=0,可认为头结点的序号为0),故只需在每次执行“p后移”操作之前增加一个判断“j
<4>删除元素
将p所指结点*p的链域p->next改为指向待删结点。*p的后继结点,该操作可以通过将带删结点*p的链域p->next的值传给结点*p的链域p->next完成;p->next=p->next。
<5>插入元素
将结点*q的链域指向结点*p的后继结点;将结点*p的链域p->next改为指向新结点。
<6>按值查找元素
按值查找即定位,按从前往后的顺序,依次比较链表中各表结点数据域的值与给定值x第一个值与x相等的表结点序号就是运算结果,若没有这样的结点,运算结果为0.
5
四 实验数据和结果分析
1.实验数据
2.结果分析
该程序能够很好的实现实验要求,并且操作方式简单易懂。先输入要输入数据的个数,然后依次的收入数据。程序会自动计算生成表长,然后弹出功能选择框,选择相应的功能即可完成操作。
6
五 心得体会
本学期第一次c语言实训,通过这次实训也是对我们所学知识的巩固,而且在对算法了解的同时也提高了语言设计能力。编程是一门熟练科学,多编程,水平肯定会提高,最重要的是能够养成一种感觉,就是对程序对算法的敏感,为什么有些人看一个算法一下就能看懂?而自己却不行,其实那是因为那些人看了很多程序,也编了很多程序,所以他们有了那种感觉,所以我觉得大家应该多看多编程序,培养出自己的感觉。
就计算机专业来看,编程能力是很重要的,一个计算机专业的学生首先了解和运用的知识就是编程,而要学习编程,必须要有明确的学习目的,一般来说在学习程序设计方法和语言时,掌握基本原理比较容易,但我们在实际应用和算法估量时我们却从下手。比如本次程序设计,刚开始看提示感觉不是很难,因为在之前我们做过相关练习,,但真的开始着手做时,真的不知道怎么下手,不过通过认真思考和查阅资料和需要的算法后,情况有了些改善。要编写高质量的程序更是我们面临的难题,这要求我们仔细体会,在反复实践过程中掌握编程技巧。
这次编程遇到了很多的问题,记得在刚开始编写的时候,编程不够细心,走了很多弯路,编程本来就要求程序员很细心,在这次链表编程中,要熟悉和了解链表的基本功能和链表里面的指针移动,要了解数据的数据域和指针域,如果不是很了解的话,很有可能把里面的数据搞错,实现不了所需的东西。
通过本次实训,还体会到编程能力的高低主要由以下几点决定:1、编程习惯;2、对算法的认知能力;3、语言掌握能力
7
六 附录 1
参考文献
[1]陈显刚.c语言程序设计[M].北京:北京理工大学出版社,2007. [2]谭浩强.c语言程序设计[M].北京:清华大学出版社,1998. [3]徐新华.c语言程序设计教程[M].北京:中国水利水电出版社,2001. [4]伍一,等.c语言程序设计与实训教程[M].北京:清华大学出版社,2007. [5]徐翠霞. c语言程序设计案例教程[M].北京:北京大学出版社,2008. [6]徐卓群等.数据结构,高等教育出版社,1987. [7]陈小平.数据结构导论,经济科学出版社.2000.
8
七 附录 2
源代码
#include
typedef int elemtype;//定义变量 typedef struct lnode { elemtype data;//定义变量 struct lnode *next;//定义结构体指针 }lnode,*linklist;
linklist linklistCreat(void)//初始化函数 { linklist L;//定义变量
L=(linklist)malloc(sizeof(lnode)); if(L)//判断长度L是否不为零 L->next=NULL; return L;//返回L的值 }
linklist linklistLocate1(linklist L,int i)//按元素序号查找函数 { linklist p;//定义变量 int j; p=L;//置初值 j=0; while(p&&jnext;//当未数到第i个结点时继续“点数” j++; } if(j!=i||!p) { printf(\值有误或链表不存在.\ return(NULL); } return (p); }
int linklistLocate2(linklist L,elemtype e) //按元素值查找函数 { int length=0;//定义变量
9
linklist p=L->next; while(p&&p->data!=e) { p=p->next; length++; } return length; }
int linklistLength(linklist L)//求链表长度函数 { linklist p=L; int length=-1; while(p) { p=p->next; length++; } return(length); }
void linklistPrint(linklist L)//输出链表 { elemtype e; for(int i=1;i
int linklistInsert(linklist L,int i,elemtype e)//插入元素函数 { linklist p,q; p=linklistLocate1(L,i-1); if(!p) { printf(\值有误\\n\ return 0; } q=(linklist)malloc(sizeof(lnode)); if(!q) { printf(\申请空间失败\\n\ return 0; } q->data=e; q->next=p->next;
10
正在阅读:
c语言程序设计实训报告 链表操作09-28
学前儿童语言教育试题05-13
提高小学科学课堂教学效益的思考与策略05-15
责任教育三句半03-05
会游泳的鸡蛋作文400字06-14
2014年中国酶制剂市场预测报告06-01
参观旅顺红色教育基地活动策划书09-01
模块五:如何与旅游者交往(教学设计)07-23
2017校长新年寄语02-08
全国2008年7月高等教育自学考试11-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 语言
- 操作
- 报告
- 高考议论文论点分论点集锦
- 诗画中的汝瓷 - 图文
- 你知道吗?汽车安全与钢板厚度无关系!
- 东方集体主义与西方个人主义的差异
- 织梦仿站系列教程第二十六讲 - 内容页(二)
- 安徽省淮南市第二中学2014届高三上学期第二次月考物理试题
- 交通工程总论-计算示例-共计18题
- 微波仿真论坛 - 微波仿真论坛 - feko5.4新例子(25,27,28,29,30)
- 地质地貌学习纲要
- 锁相技术期末总复习提纲 - 图文
- 教育科学出版社教科版五年级科学下册全册教案教学设计
- Caxwtua教你如何用电脑通过蓝牙连接手机上网
- 港口建设流程
- 《论教养》教案
- 张梨梨林学概论重点
- 中国石油大学波浪对圆柱的作用力实验
- 弟子规教案全集 - 图文
- 张颂《朗读学》具体感受和朗读的作用
- 应付职工薪酬实质性程序 - 图文
- 诸城市城区裸露土地绿化工程技术2