- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河北工业大学2014数据结构实验报告
河北工业大学《数据结构》2014版实验报告实验一、约瑟夫环【源代码】#includestdio.h#includestdlib.hstruct 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;//队尾指针}LinkQueue;void initqueue(LinkQueue Q){//构造一个空队列 Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front)exit(OVERFLOW); Q.front-next=Q.rear-next=NULL;}void enqueue(LinkQueue
原创力文档


文档评论(0)