C语言实习报告_第1页
C语言实习报告_第2页
C语言实习报告_第3页
C语言实习报告_第4页
C语言实习报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目一线性结构的操作1.用线性表的顺序存储(数组)保存数据算法的N-S图或流程图2.用线性表的链式存储(链表)保存数据插入:Hinclude<stdio.h>#include<stdlib.h>typedefstructintnum;/学号charname10;/姓名student;/定义的抽象元素类型ElemtypetypedefstructNode/*结点类型定义*/studentdata;structNode*next;Node,*LinkList;/*LinkList为结构指针类型*/staticintcount;/学生人数/带头结点的尾插入法创建链表voidi

2、nsert(LinkListhead)LinkListp,q;/p代表的待插元素代入最后一个元素q=head;q指向head结点printf("输入学生人数:");scanf("%d",&count);for(inti=0;i<count;i+)printf("n输入第於学生信息:n",i+1);p=(LinkList)malloc(sizeof(Node);结点p中请一个空间printf("输入学号:");scanf("%d",&p->data.num);/输入结点

3、p的数据°学号printf("n输入姓名:");scanf("%s",p->);/输入结点的数据域姓名name为数组类型数组名为首地址所有此处不需要地址符号if(i=0)head->next=p;/i=0链表中没有元素只有头节点把插入到head之后elseq->next=p;/链表中已有结点元素结点采用尾插入法q=p;/每插入一个元素就赋值于qq始终指向最后一个元素p->next=NULL;/设置next域为空voidprint(LinkListhead)LinkListx;/定义一个链表结点x=hea

4、d->next;/该节点指向第一个元素printf("学生信息如下n");while(x)/存在结点printf("学号%d姓名%sn",x->data.num,x->);/输出该结点的数据域学号和姓名x=x->next;/下一个元素printf("n");/把链表中的文件信息放入文件中/写入语句voidsavetofile(LinkListhead)FILE*fp;LinkListp;p=head->next;if(fp=fopen("d:st2.txt",&quo

5、t;wb+")=NULL)printf("不能打开文件");return;while(p)fprintf(fp,"%d%srn",p->data.num,p->);p=p->next;printf("n写入成功n");/功能菜单提示性语句voidmenu()printf("n0.退出1.输入2.输出3.写入n");voidmain()intchoice;LinkListl;l=(LinkList)malloc(sizeof(Node);/头结点申请空间l->nex

6、t=NULL;/头结点的next为空menu();while(1)scanf("%d",&choice);/输入一个整数switch(choice)case 1: insert(l);menu();break;break;case 2: print(l);menu();default:exit(0);题目二排序#include"stdio.h"#include"stdlib.h"#include"time.h"#defineTRUE1#defineFALSE0typedefintKeyType;typede

7、fintOtherType;#defineMAXSIZE200/*线性表可能达到的最大长度*/typedefstructKeyTypekey;OtherTypeother_data;RecordType;voidInsSort(RecordTyper,intlength)/*对记录数组r做直接插入排序,length为数组中待排序记录的数目*/inti,j;for(i=2;i<=length;i+)r0=ri;/*将待插入记录存放到监视哨r0中*/j=i-1;while(r0.key<rj.key)/*寻找插入位置*/rj+1=rj;j=j-1;*/rj+1=r0;/*将待插入记录插

8、入到已排序的序列中/*InsSort*/voidBubbleSort(RecordTyper,intlength)/*对记录数组r做冒泡排序,length为数组的长度*/intn,i,j;intchange;RecordTypex;n=length;change=TRUE;for(i=1;i<=n-1&&change;+i)change=FALSE;for(j=1;j<=n-i;+j)if(rj.key>rj+1.key)x=rj;rj=rj+1;rj+1=x;change=TRUE;/*BubbleSort*/voidSelectSort(RecordTyp

9、er,intlength)/*对记录数组r做简单选择排序,length为数组的长度*/inti,j,k;intn;RecordTypex;n=length;for(i=1;i<=n-1;+i)k=i;for(j=i+1;j<=n;+j)if(rj.key<rk.key)k=j;if(k!=i)x=ri;ri=rk;rk=x;/*SelectSort*/voidsqrand(RecordTyper)/获取随机数据inti;intlen;srand(time(NULL);/设置随机数种子。for(i=1;i<=100;i+)ri.key=rand()%101;voidout

10、(RecordTyper)for(inti=1;i<=100;i+)printf("%5d",ri.key);voidmenu()printf("n1生成随机数2输出随机数3插入排序4冒泡排序5简单选择排序其他退出n");intmain()intlen,n;RecordTyperMAXSIZE;menu();len=100;while(1)scanf("%d",&n);switch(n)case 1: sqrand(r);break;case 2: out(r);break;case3:InsSort(r,len);br

11、eak;case4:BubbleSort(r,len);break;case5:SelectSort(r,len);break;default:exit(0);break;menu();return0;源程序清单宿舍结构体顺序存储结构定义如下:#defineMAXSIZE100typedefstruct/学生住宿记录结构体chardormID10;intstudentID;charname10;charsex2;intage;dormitory;typedefstruct/顺序表的存储结构dormitorydormMAXSIZE;/线性表占用的数组空间intlast;/最后一个元素在数组中的位

12、置(下标值),空表置为-1SeqList;宿舍结构体链式存储结构定义如下:typedefstructdormitory/学生住宿记录结构体chardormID10;intstudentID;charname10;charsex2;intage;dormitory;typedefstructNode/学生住宿记录结点studentdata;structNode*next;为结构体指针类型Node,*LinkList;/LinkList题目一线性结构的操作1. 用线性表的顺序存储(数组)保存数据( 1)键盘输入你所在宿舍的同学信息到数组;( 2)遍历输出所以学生数据;( 3)按姓名查找并输出指定学

13、生数据,统计查找的次数;( 4)把数组内容输出到文件;( 5)从文件读入学生数据,按学号排序后显示在屏幕;( 6)某同学调入你的宿舍,请增加其信息;并查看增加后的结果;( 7)某同学调离你的宿舍,请删除其信息,并查看删除后的结果;题目一线性结构的操作2. 用线性表的链式存储(链表)保存数据( 1)键盘输入你所在宿舍的同学信息到数组;( 2)遍历输出所以学生数据;( 3)按姓名查找并输出指定学生数据,统计查找的次数;( 4)把数组内容输出到文件;( 5)从文件读入学生数据,按学号排序后显示在屏幕;( 6)某同学调入你的宿舍,请增加其信息;并查看增加后的结果;( 7)某同学调离你的宿舍,请删除其信

14、息,并查看删除后的结果;题目二排序实习总结报告这次课程设计的心得体会通过实习我的收获如下:数据结构是计算机很基础的一门学科,但是学习就是要从基础学起.本次实训首先巩固课本上重要知识点,首先是一些基本操作,掌握线性表在单链存储结构中实现基本运算(查找、插入、删除、合并等)的算法,线性表在单向循环链表结构中实现基本运算(查找、插入、删除、合并等)的算法1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4

15、、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全观观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论