算法与数据结构课程设计说明书(2)

2020-02-20 23:08

2图2为当m=150时,输出1~150之间的素数,结果如图所示。

图1.4 1~150之间的素数运行结果

3 图3为m大于L.length时的图

图1.5大于L.lenggth

1.7源程序(带注释)

#include #include #define maxsize 200 #define FALSE 0 typedef int DataType; typedef struct { DataType data[maxsize]; int length; }Seqlist;//结点结构

int sushu(DataType i)//判断是否为素数 {

int m; f(i==1) return 0;

6

for(m=2;m

int main() { Seqlist L; int m,j; int i,k=0; L.length=maxsize; for(j=2;j<=L.length ;j++) { L.data[j-1]=j; printf(\ } printf(\ printf(\ scanf(\ if(m>L.length ) return FALSE; printf(\至m之间的素数从小到大分别为:\\n\ for(i=1;i<=m ;i++) L.data[i-1]=i; for(i=1;i<=m;i++) if(sushu(L.data[i-1])) { k++; printf(\符号\的作用是横向制表。 } printf(\总共%d个。\\n\ return 0; }

二、数据删除问题

2.1 问题描述

编写删除具有N个数据项的数组A中所有重复项的程序,返回A中仍有的数据项。要求运行时间在O(NlogN)。(例如:

数组a的初始数据为:2,5,2,4,20,0,4,-5,-5,16,2,-4,20。 升序排序后为: -5,-5,-4,0,2,2,2,4,4,5,16,20,20。

7

删除重复数据后为: -5,-4,0,2,4,5,16,20

2.2算法设计

(1)定义一个数组a[10],用循环实现排序 for(i=0;i<10;i++) {

for(j=i+1;j<10;j++) {

if(a[i]>a[j]) {

t=a[i]; a[i]=a[j]; a[j]=t;

用直接覆盖法删除重复数据 for(j=i+1;j<9;j++) a[j]=a[j+1];

(2)程序流程图

数据删除问题程序流程图 理的输入所要处 数组,进行编译预 处理 进行排序(冒泡排序) 8

利用正则遍历, 将数组中重复的 数据分离出来, 用于单独处理 在遍历过程中,将相 同的分别数据保留 一个,并继续遍历 输出处理后的新数组 若没有数据相同,则跳过此阶段 图2.1数据删除流程图

9

2.3程序调试情况:

1数据删除问题:当输入1 2 2 2 3 3 3 2 1 3 时,删除重复数据,输出结果如图所示。

图2.2数据删除图

2.4源程序

#include main()

{ int i,j,t; int a[10];

printf(\请输入10个数:\\n\

for(i=0;i<10;i++) //输入 scanf(\

printf(\输入的10个数是:\ for(i=0;i<10;i++) printf(\ printf(\

for(i=0;i<10;i++) //排序 {

for(j=i+1;j<10;j++) {

if(a[i]>a[j]) {

t=a[i]; a[i]=a[j]; a[j]=t; } }

10


算法与数据结构课程设计说明书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:测控111 毕业论文最终版 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: