数据结构课程设计_第1页
数据结构课程设计_第2页
数据结构课程设计_第3页
数据结构课程设计_第4页
数据结构课程设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、一、实验目的1. 掌握在数组上进行各种查找的方法和算法。2. 深刻理解各种方法的特点,并能灵活运用。3. 加深对查找的理解,逐步培养解决实际问题的能力。二、 运行环境(软、硬件环境)软件环境:Vc6.0编程软件运行平台: Win32硬 件: 普通个人pc机三、 算法设计的思想1、查找的基本概念(一)基础题1.编写各种查找方法的基本操作函数:(1)search1(int *k,int n,int key)无序线性表的顺序查找;(2)search2(int *k,int n,int key)有序线性表的顺序查找;(3)bin_search(int *k,int n,int key)二分法查找。2.

2、调用上述函数实现下列操作:(1)对于给定的数组EN=213,111,222,77,400,300,987,1024,632,555调用无序线性表的顺序查找函数进行查找;(2)调用有序线性表的顺序查找函数进行查找;(3)调用二分法查找函数进行查找。(二)提高题【问题描述】采用随机函数产生职工的工号和他所完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,最后按“职工完成产品数量的名次,该名次每位职工完成的产品数量,同一名次的职工人数和他们的职工号”的格式输出。【实现要求】输出统计结果,如下所示:ORDER QUANTITY COUNT NUMBER1 375 3 10 20 214 2

3、50 2 3 56 200 1 97 150 2 11 14l实验结果1、查找的基本概念(一)基础题(1)画出数据结构基本运算的流程图(2)程序运行主要结果截图(3)程序源代码#include#include#define N 10int EN=213,111,222,77,400,300,987,1024,632,555;void s_sort(int e,int n)/*e:存储线性表的数组;n:线性表的结点个数*/ int i,j,k,t; for(i=0;in-1;i+) for(k=i,j=i+1;jej) k=j; if(k!=i) t=ei; ei=ek; ek=t; int s

4、earch1(int *k,int n,int key) /*无序线性表的顺序查找*/ int i; for(i=0;in;i+) if(key=ki) return i; return -1; int search2(int *k,int n,int key)/*有序线性表的顺序查找*/ int i; for(i=0;iki;i+) if(in&ki=key) return i; return -1; int bin_search(int *k,int n,int key)/*二分法查找*/ int low=0,high=n-1,mid; while(lowkmid) low=mid+1;

5、else high=mid-1; return -1;int main() int i,j,p; printf(初始化数据序列为:n); for(i=0;i=0) printf(找到关键字,位置:%dn,j+1); else printf(找不到!n); getch(); printf(n顺序排序后的数据序列为:n); s_sort(E,N); for(i=0;i=0) printf(找到关键字,位置为:%dn,j+1); else printf(找不到!n); getch(); printf(n3.二分法查找n); printf(n输入要查找的关键字:); scanf(%d,&i); if(

6、j=bin_search(E,N,i)=0) printf(找到关键字,位置为:%dn,j+1); else printf(找不到n); getch();(二)提高题(1)画出数据结构基本运算的流程图(2)程序运行主要结果截图(3)程序源代码#include#include#define MAXQ 5typedef struct workload int no; int q; struct workload *next;WL;void Getdata(int maxno,int *no,int *q) *no=rand()%maxno; *q=rand()%MAXQ+1;WL *creat_w

7、l(int maxno,int maxrc) int no,q,i; WL *u,*v,*p,*head; head=NULL; for(i=0;ino!=no;v=v-next) u=v; if(v!=NULL) if(v=head) head=v-next; else u-next=v-next; v-q+=q; else if(v=(WL*)malloc(sizeof(WL)=NULL) printf(申请空间失败!); exit(-1); v-no=no; v-q=q; p=head; while(p!=NULL&(p-qq|p-q=v-q&p-nono) u=p; p=p-next;

8、 if(p=head) head=v; else u-next=v; v-next=p; return head;void print_wl(WL *head) int count,order; WL *u,*v; printf(order quantity count numbern); u=head; order=1; while(u!=NULL) for(count=1,v=u-next;v!=NULL&v-q=u-q;v=v-next) count+; printf(%4d%9d%6d,order,u-q,count); order+=count; for( ;count-!=0;u=u-next) printf(%4d,u-no); printf(n); int main() WL *wl,*tmp; int i,j; while(1) printf(输入人工数(0),工作量记录数(0),=0退出n); fflush(stdin);

温馨提示

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

评论

0/150

提交评论