顺序表的归并.doc_第1页
顺序表的归并.doc_第2页
顺序表的归并.doc_第3页
顺序表的归并.doc_第4页
顺序表的归并.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

数据结构与算法设计实验报告实验1学院:自动化学院班级:自动化2班学号:1320110130姓名:赵帅一、 实验目的 :理解抽象数据类型的定义;学会用c语言实现对线性循环链表的基本操作; 二、实验内容 采用单向环表实现约瑟夫环。三、程序设计 1、概要设计:(说明程序中用到的抽象数据类型定义,宏定义,主程序的流程以及各个程序模块之间的调用关系,给出主要流程图 )抽象数据类型定义:ADT List数据对象:D=ai|aiElemSet, i=1,2, ,n, n0数据关系:R1=|ai-1,aiD, i=1,2, ,n 基本操作:Creat(m)操作结果:创见一个具有m个结点的单向环表;主程序流程:调用函数create构造链表通过循环依次输出结点编号模块调用关系:主函数main()调用creat()函数。流程图:开始 输入想要创建的单向表的结点数m,计数起点s和间隔数n 调用函数创建单向环表找到计数起点S计数到n,并且输出该元素,使结点在链表中删除,m减1.m=0? 是结束 否 2详细设计:数据类型: struct ele int no; struct ele *link; ;调用的函数:struct ele Creat(m)int i; h = u = (struct ele *) malloc(sizeof(struct ele);/*形成首表元*/ h-no = 1; for (i = 2; i link = (struct ele *) malloc(sizeof(struct ele); u = u-link; u-no = i;/*第i个表元置编号i*/ u-link = h;/*末表元后继首表元,形成环*/ 主函数:main() struct ele *p,*q; int n, m, i,s; printf(请输入单向环表的结点数:); scanf(%d, &m);/*输入n和m*/ Creat(m); printf(请输入计数起点和间隔:); scanf(%d %d, &s,&n);if (sm)printf (您输入的数据有误);else printf(输出序列为:n);p=h;for (i = 1; i link; /*掠过前s-1个表元*/ while (m) for (i = 1; i link;/*掠过n1个表元*/ q= p-link; /*p指向第n个表元*/ p-link = q-link;/*第n个表元从环中脱钩*/ printf(%4d, q-no); free(q);/*释放第n个表元占用的空间*/ m-; printf(n); 四、程序调试分析 (程序运行中遇到的问题与改正措施,以及对程序调试的体会与收获 )局部变量和全局变量的使用;一些简单的语法错误;细节决定成败,养成良好的变成习惯十分重要。五、用户使用说明 (说明如何使用你的程序,给出操作步骤)打开软件,待显示器上出现“请输入单向环表的结点数:”后:输入想要建立环表的结点数,按“enter”键结束。显示器上显示“请输入计数起点和间隔:”后,输入想要计数的起点按回车键后输入间隔数,按“enter”结束。若显示器上显示“您输入的数据有误!”时说明你输入的为无效数据请查证。六、程序运行结果(列出测试结果,包括输入和输出,最好给出2个测试结果)1, 请输入单向环表的结点数:10请输入计数起点和间隔:3 4输出序列为: 6 10 4 9 5 2 1 3 8 72,请输入单向环表的结点数:10请输入计数起点和间隔:12 4 您输入的数据有误!七、程序清单(要求给函数加上注释)#include stdlib.h #include struct ele int no; struct ele *link; ;struct ele *h, *u;/声明全局变量struct ele Creat(m)int i; h = u = (struct ele *) malloc(sizeof(struct ele);/*形成首表元*/ h-no = 1; for (i = 2; i link = (struct ele *) malloc(sizeof(struct ele); u = u-link; u-no = i;/*第i个表元置编号i*/ u-link = h;/*末表元后继首表元,形成环*/ main() struct ele *p,*q; int n, m, i,s; printf(请输入单向环表的结点数:); scanf(%d, &m);/*输入n和m*/ Creat(m); printf(请输入计数起点和间隔:); scanf(%d %d, &s,&n);if (sm)printf (您输入的数据有误);else printf(输出序列为:n);p=h;for (i = 1; i link; /*掠过前s-1个表元*/ while (m) for (i = 1; i link;/*掠过n1个表元*/ q= p-

温馨提示

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

评论

0/150

提交评论