数据结构课程设计报告

发布 2019-07-29 03:00:37 阅读 2841

所有的限制,几乎都是从自己的内心开始的。

一. 前沿:

排序是数据结构中的一块难点,也是重点。熟练的掌握各种各样的排序算法是对每个编程人员的基本的要求。历年的考研还是期末考中,排序都占了比较大的比重。

二. 程序实现的功能:

本程序采用了各种不同的方法对同一个输入进行排序,且每一个元素其本身亦是一个结构体,又可以进行扩充,使其可以存储其他的相关的信息。在此我仅仅举了结构体本身只有一个元素的情况。

a) 采用的数据类型:

为了讨论的方便,本程序采用了复合型的结构体类型,且才用了静态线性表的形式,不能进行扩充,一旦空间开辟,就不能在扩充(注意)。

具体如下:typedef struct

基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。

先在各组内进行直接插人排序;然后,取第二个增量d2void quicksort(sqlist& l,int low,int high)

//快速排序。

if(lowgh]进行一次快速排序。

i=low;j=high;

dovoid heapsort(sqlist &l)

//建堆的过程。

for(i=>0;i--)

heapadjust(l,i,for(i=>1;i--)

t=heapadjust(l,1,i-1);

基本思想:堆排序利用了大根堆堆顶记录的关键字最大这一特征,使得在当前无序区中选取最大关键字的记录变得简单。先将初始文件r[1..

n]建成一个大根堆,此堆为初始的无序区。再将关键字最大的记录r[1](即堆顶)和无序区的最后一个记录r[n]交换,由此得到新的无序区r[1..n-1]和有序区r[n],且满足r[1..

n-1].keys≤r[n].key。

由于交换后新的根r[1]可能违反堆性质,故应将当前无序区r[1..n-1]调整为堆。然后再次将r[1..

n-1]中关键字最大的记录r[1]和该区间的最后一个记录r[n-1]交换,由此得到新的无序区r[1..n-2]和有序区r[n-1..n],且仍满足关系r[1..

n-2].keys≤r[n-1..n].

keys,同样要将r[1..n-2]调整为堆。

直到无序区只有一个元素为止。

void oesort(sqlist& l,int n)

//奇偶交换排序。

change=1;标志变量,若其为零,即两次更替的交换中都没有交换数据,即排序结束。

while(change)

change=0;

for(i=1;i排序。

if(>

t=change=1;

for(i=2;i

t=所有的限制,几乎都是从自己的内心开始的。

change=1;

算法过程:第一趟对序列中的所有奇数项i扫描,第二趟对序列中的所有偶数项i扫描。若ri] >r[i+1],则交换它们。

第三趟有对所有的奇数项,第四趟对所有的偶数项如此反复,直到整个序列全部排好序为止。

五.源程序:

#include ""

#include ""

#include ""

#define maxsize 5

typedef struct

void quicksort(sqlist l,int low,int high)

int i,j;

if(low

-j;if(i

break;

s=j;void heapsort(sqlist l)

int i,t;

for(i=>0;i--)

heapadjust(l,i,for(i=>1;i--)

t=heapadjust(l,1,i-1void oesort(sqlist l,int n)

int t,i,change;

change=1;

while(change)

change=0;

for(i=1;i

t=change=1;

for(i=2;i

t=change=1;

所有的限制,几乎都是从自己的内心开始的。

main()

int i,j,low,high,a[maxsize+1];

char ch;

sqlist l;

clrscr();

*)malloc(maxsize*sizeof(int));

if(!printf("overflow");

printf("please input five elements:");

for(i=1;iort(l,printf("the odered arry:")

for(i=1;i

printf("%d ",printf("");

break;

case 'q':

low=1;high=

quicksort(l,low,high);

printf("the odered arry:")

for(i=1;i

printf("%d ",printf("");

break;

case 'h':

heapsort(l);

printf("the odered arry:")

for(i=1;i

printf("%d ",printf("");

break;

case 'e':

oesort(l,printf("the odered arry:")

for(i=1;i

printf("%d ",printf("");

break;

case 'o':

exit(0);

default:

printf("error!write again!");

while(1);

六. 程序运行结果:

当你编译连接通过后,运行。

please input five elements:

回车后出现大括号内的部分。

welcome to use panweifeng's kechensheji

s:shellsort q:quicksort

h:heapsort e:oesort

o:quit

please input the way:}s

输入s回车后出现大括号内的部分。

the orignal array:6 4 5 8 3

the odered array:3 4 5 6 8

welcome to use panweifeng's kechensheji

s:shellsort q:quicksort

h:heapsort e:oesort

o:quit

please input the way:}q

输入q回车后出现大括号内的部分。

the orignal array:6 4 5 8 3

the odered array:3 4 5 6 8

welcome to use panweifeng's kechensheji

所有的限制,几乎都是从自己的内心开始的。

s:shellsort q:quicksort

h:heapsort e:oesort

o:quit

please input the way:}h

输入h回车后出现大括号内的部分。

the orignal array:6 4 5 8 3

the odered array:3 4 5 6 8

welcome to use panweifeng's kechensheji

s:shellsort q:quicksort

h:heapsort e:oesort

o:quit

please input the way:}e

输入e回车后出现大括号内的部分。

the orignal array:6 4 5 8 3

the odered array:3 4 5 6 8

welcome to use panweifeng's kechensheji

s:shellsort q:quicksort

h:heapsort e:oesort

o:quit

please input the way:}r

输入r回车后出现大括号内的部分。

the orignal array:6 4 5 8 3

error!write again!

welcome to use panweifeng's kechensheji

s:shellsort q:quicksort

h:heapsort e:oesort

o:quit

please input the way:}o

输入o回车后,将返回编辑窗口。

程序结束。七. 总结:

通过本课程设计,我们对比较流行的几种算法定有了一个比较详细的认识,集中的编写也便于记忆。但我们不能死扣这几种算法,要有自己的创新。

计科021:潘伟丰(200232225134计科021:潘伟丰第 1 页共 9 页所有的限制,几乎都是从自己的内心开始的。

数据结构课程设计报告格式new

山东建筑大学计算机科学与技术学院。课程设计说明书。题目 哈夫曼编 译码器。算术表达式求值演示。课程 数据结构课程设计。院 部 理学院。专业 信息与计算科学。班级 信计0x1 学生姓名 xx 学号 2006121 指导教师 完成日期 2008 7 4 目录。课程设计任务书一 i 课程设计任务书二 ii...

数据结构与算法课程设计心得体会学习体会 35

课程设计心得体会。因为已经不是第一次做课程设计,所以对过程很是了解。前期准备工作也做的很充足,所以整个过程不慌不乱,有条不紊。总而言之,程序编写过程中,算法思路清晰,但细节处处理粗糙导致走了很多弯路。老师不只一次提到数据结构强调的是算法思路,经过这次课程设计后,我更是有了进一步深切体会。包括我之前在...

数据结构与算法课程设计心得体会学习体会 31

合肥学院。计算机科学与技术系。课程设计的心得体会。2009 2010 学年第二学期。2010年6 月。通过这次课程设计我自学了拓扑排序,使我对其排序方法和应用有了更深刻的了解。对于数据结构如何用c语言表述有了更深刻的体会和了解。在用c语言表述数据结构时遇到了不小的困难。总是在编译时错误连篇无法运行,...