试验七排序算法的实现.DOCVIP

  • 59
  • 0
  • 约5.01万字
  • 约 77页
  • 2018-10-26 发布于天津
  • 举报
试验七排序算法的实现

PAGE PAGE 3 《数 据 结 构 实 践》 实 验 指 导 书 2013年8月 目 录 TOC \o 1-1 \h \z \u HYPERLINK \l _Toc374450324 实验一 C语言编程复习 PAGEREF _Toc374450324 \h 3 HYPERLINK \l _Toc374450325 实验二 线形表基本操作的实现 PAGEREF _Toc374450325 \h 5 HYPERLINK \l _Toc374450326 实验三 栈和队列基本操作的实现及应用 PAGEREF _Toc374450326 \h 14 HYPERLINK \l _Toc374450327 实验四 二叉树算法的实现 PAGEREF _Toc374450327 \h 26 HYPERLINK \l _Toc374450328 实验五 图的算法的实现 PAGEREF _Toc374450328 \h 40 HYPERLINK \l _Toc374450329 实验六 查找算法的实现 PAGEREF _Toc374450329 \h 57 HYPERLINK \l _Toc374450330 实验七 排序算法的实现 PAGEREF _Toc374450330 \h 67 实验一 C语言编程复习 一、实验目的 1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。 2.理解指针与应用的区别。 3.掌握结构体的使用。 4.掌握简单排序方法。 二、实验内容 1、使用指针和引用两种方式,完成两个学生的交换。 2、写一函数,根据成绩,对包含有n个学生的数组进行排序。 三、实验步骤 1. 定义一个Student的结构体类型,包含学号、姓名、成绩等成员。 2. 分别写Swap1(Student *s1, Student *s2) 和Swap2(Student s1, Student s2),完成两个学生的交换。 3.写一排序函数 SortStu(Student *s, int n),使用冒泡或者简单选择排序算法根据成绩完成学生的排序。 四、实现提示 struct Student { char name[20]; //姓名 char num[10]; //学号 float score; //成绩 }; void Swap1(Student *, Student *);//交换两个结构体变量(指针) void Swap2(Student , Student );//交换两个结构体变量(引用) void SortStu (Student *,int);//按成绩(高到低)排序 五、思考与提高 思考为何void Swap1(Student, Student )这个函数无法实现两个学生的交换? 六、完整参考程序 void Swap1(Student *s1, Student *s2) { Student temp; temp=*s1; *s1=*s2; *s2=temp; } void Swap2(Student s1, Student s2) { STUDENT temp; temp=s1; s1=s2; s2=temp; } void SortStu(Student S[],int n) { Student temp; for(int i=0;in;i++) { int idx = i; for(int j=i+1;jn;j++) { if(S[idx].scoreS[j].score) idx = j; } if (idx != i) { temp= S[idx]; S[idx] = S[i]; S[i] = temp; } } } 实验二 线形表基本操作的实现 一、实验目的 1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。 2.掌握线性表的顺序存储结构的定义及C语言实现。 3.掌握线性表的链式存储结构——单链表的定义及C语言实现。 4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。 5.掌握线性表在链式存储结构——单链表中的各种基本操作。 二、实验内容 1.顺序线性表的建立、插入及删除。 2.链式线性表的建立、插入及删除。 三、实验步骤 1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。 2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。 3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。 四、实现提示 1.由于C语言的数组类型也有随机存取的特点,一维数

文档评论(0)

1亿VIP精品文档

相关文档