- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河北工业大学2014数据结构实验报告讲述
河北工业大学
《数据结构》
2014版
实验报告
实验一、约瑟夫环
【源代码】
#includestdio.h
#includestdlib.h
struct Lnode
{int number;
int password;
struct Lnode *next;
}Lnode,*p,*q;
int main()
{int n;
int i;
int m;
int j;
printf(please enter the number of people n:);
scanf(%d,n);
if(n=0||n30)
{printf(n is erorr!\n);
printf(please enter the number of people again :);
scanf(%d,n);
}
for(i=1;i=n;i++)
{
if(i==1)
{p=q=(struct Lnode*)malloc(sizeof(struct Lnode));}
else
{
q-next=(struct Lnode*)malloc(sizeof(struct Lnode));
q=q-next;
}
printf(please enter the %d peoples password:,i);
scanf(%d,(q-password));
q-number=i;
}
q-next=p;
printf(please enter the number m:);
scanf(%d,m);
printf(The password is:\n);
for(j=1;j=n;j++)
{
for(i=1;i=m-1;i++)
{q=p;p=p-next;}
m=p-password;
printf(%d ,p-number);
q-next=p-next;
free(p);
p=q-next;
}
printf(\n);
}
【实验感想】
这次编写约瑟夫环程序虽然用了很长时间,但是当程序正确运行的时候,真的感觉特别开心!我一边画图,一边分析,一边调试,在许多次的调试过程中,我注意到了好多问题,有很多细节真的是有一点不对就会满盘皆输,而且每次感觉能成功编好的情况下,把代码敲进机器却总是得不到正确的答案,感觉很郁闷,也想放弃过,但是最后还是坚持下来了。总共用了一天的时间。可能是因为我课本知识掌握的不扎实,而且很久没有编写程序了,第一次上机感觉有困难。编代码的时候走了好多弯路,其中有一个弯路就是我设立了一个头节点,然后还自以为很聪明的把头节点绕了过去,等等。很多类似的错误,都是以前觉得自己没问题,一上机才知道原来还存在很多问题。
这是第一次数据结构上机课,以前跟老师上课的时候总是感觉对这种类C语言很陌生,不像和以前学C/C++语言那样,书上的程序一看就知道什么意思,而且这些算法是包含思想的,必须要自己想的特别明白。
简单总结一下思路:
我觉得程序大致分三块
是???结构体定义节点类型,每个节点有3个域,两个数据域,一个指针域
定义好节点之后,利用指针形成链表,但有一点要注意就是不需要头节点,并且最后一个节点的指针要指向第一个节点,从而构成循环链表
删除节点,但关键点是指针的位置一定要移动正确,我觉得这部分一定要想的非常明白才能正确的编出程序
通过这次编程,首先我把约瑟夫环问题的算法弄的非常明白,也通过实验夯实了课内学到的许多知识,在计算机上得到了印证,现在对于定义链表还有对节点进行删除、插入操作也弄的非常明白。总之,上机能很好的巩固上课学到的知识,正确的编出程序也会觉得很有成就感,很开心,收获颇多!
实验二、停车场管理
【源代码】
#includeiostream
#define n 2
//将停车场的容量设为2
#define cost 10
//将单位时间的停车费设为10,车道里不收费
#define OVERFLOW -2
#define ERROR 0
//分配栈的存储空间失败;
using namespace std;
typedef struct Elem
{//定义元素数据结构类型
int carnum;
int time;
}Elem;
typedef struct QNode
{//队列
struct QNode *next;
Elem Qelem;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;//队头指针
QueuePtr rear;//
文档评论(0)