1 / 24
文档名称:

算法与数据结构.doc

格式:doc   大小:622KB   页数:24
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

算法与数据结构.doc

上传人:文库旗舰店 2022/4/13 文件大小:622 KB

下载得到文件列表

算法与数据结构.doc

文档介绍

文档介绍:数据结构与算法 课程设计

题 目 求素数问题、数据删除问题、
方程求解问题、排序重构问题
目 录
摘 要 3
一.求素数问题 4
;l<=200;l++){
printf(" %d",l);
}
printf("\n200以内的素数有:");
for(p = a; p < a+SIZE; ++p) { /*初始化数组全是TRUE*/
*p = TRUE;
}
a[0] = a[1] = FALSE; /*设置前面两个不是质数的数的状态为FALSE*/
i = 2;
while(i < SIZE) { /*找到下一个质数*/
while(a[i++] == TRUE) {
j = i-1;
break;
}
for(k = 2; j*k < SIZE && i < SIZE; ++k) { /*处理质数的倍数*/
a[j*k] = FALSE;
}
}
for(p = a; p < a+SIZE; ++p) { /*打印出质数*/
if(*p == TRUE) {
printf("%8d", p-a);
}
}
printf("\n");
return 0;
8
二.数据删除问题
编写删除具有N个数据项的数组A中所有重复项的程序,返回A中仍有的数据项。要求运行时间在O(NlogN)。

typedef struct StackNode{ //结点结构体
char data;
struct StackNode *next;
}StackNode,*LinkStackPtr;
typedef struct LinkStack{ //链栈结构体
LinkStackPtr top;
int count;
}LinkStack;

产生随机数组。
利用随机数组创建链表。
用x数组中的n个数据创建一个单链表,返回表头节点地址。
删除重复节点:递归函数。
从输入参数节点出发,删去值相同的多余节点的算法。
9

结束
输出新得出的数字
给输入的数字排序
查找重复
的数字
删除重复的数字
开始


起初设置的是自己输入一组数组,在进行删除,不过问题是过于繁琐,处理方法是随机出现数组。
时间复杂度是0(n);
10

(带注释)
#include <>
main()
{
int i,j,t;
int a[10];
printf("请输入10个数:\n");
for(i=0;i<10;i++) //输入
scanf("%d",&a[i]);
printf("输入的10个数是:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");A
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;
}
11
}
}

printf("10个数排序后是:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<9;i++) //删除重复数字
{
if(a[i]==a[i+1]) //如果后一个数等于前一个数,就把后一个数删掉(ps:这里已经排过序,所以可以这样做来删除重复数字)
{
for(j=i+1;j<9;j++) //这里的删除用的直接覆盖
a[j]=a[j+1];
}
}
printf("删除重复数字后:");
for(i=0;i<10;i++)
{
if(i>0&&a[i-1]==a[i]) //只输出前面不重复的数
break;
printf("%d ",a[i]);
}
printf("\n");
}
12
三.方程求解问题
方程A5+B5