20XX~20XX第一学期数据结构实验报告
班级:信管一班
学号:*********
姓名:***
实验报告题目及要求
一、实验题目
设某班级有M(6)名学生,本学期共开设N(3)门课程, 要求实现并修改如下程
序(算法)。
1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统),输出实验结果 。(15分)
2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学生的学号、姓名和成绩。
3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。
二、实验要求
1.修改算法。将奇偶排序算法升序改为降序。(15分)
2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分))
3.编译、链接以上算法,按要求写出实验报告(25)。
4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。
5.用A4纸打印输出实验报告。
三、实验报告说明
实验数据可自定义,每种排序算法数据要求均不重复。
(1) 实验题目:《N门课程学生成绩名次排序算法实现》;
(2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性;
(3) 实验要求:对算法进行上机编译、链接、运行;
(4) 实验环境(Windows XP-sp3,Visual c++);
(5) 实验算法(给出四种排序算法修改后的全部清单);
(6) 实验结果(四种排序算法模拟运行后的实验结果);
(7) 实验体会(文字说明本实验成功或不足之处)。
三、实验源程序(算法)
Score.c
#include "stdio.h"
#include "string.h"
#define M 6
#define N 3
struct student
{ char name[10];
int number;
int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/
}stu[M];
void changesort(struct student a[],int n,int j)
{int flag=1,i;
struct student temp;
while(flag)
{ flag=0;
for(i=1;i<n-1;i+=2) /*对所有奇数项进行一遍比较*/
if (a[i].score[j]>a[i+1].score[j])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
for(i=0;i<n-1;i+=2) /*对所有偶数项进行一遍比较*/
if (a[i].score[j]>a[i+1].score[j])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
}
}
void print_score(struct student a[],int n,int j)
{ int i,k;
printf(“ 奇偶交换 成绩 %d 排序表",j+1);
printf("\n");
printf(" 名 次 学 号 姓 名 分 数\n");
k=1;
for(i=0;k<N&&i<n;i++)
{ if(i>0&&a[i].score[j]!=a[i-1].score[j])
k++;
printf(" %4d ",k);
printf("%4d",a[i].number);
printf(" %s",a[i].name);
printf(" %6d",a[i].score[j]);
printf("\n");
}
}
main()
{ int i,j,k;
for (i=0;i<M;i++) /*输入每个学生信息*/
{ printf("请输入第 %d 名学生分数: ",i+1);printf("\n");
printf("姓 名: ");
scanf("%s",stu[i].name);
printf("编 号: ");
scanf("%4d",&stu[i].number);
printf("数据结构: ");
scanf("%4d",&stu[i].score[0]);
printf("离散数学: ");
scanf("%4d",&stu[i].score[1]);
printf("大学英语: ");
scanf("%4d",&stu[i].score[2]);
}
for(i=0;i<M;i++) /*计算每个学生总分*/
{ stu[i].score[N]=0;
for(j=0;j<N;j++)
stu[i].score[N]+=stu[i].score[j];
}
changesort(stu,M,N); /*对总分进行排序*/
printf(" 学生总分成绩排序表\n");
printf(" 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分\n");
k=1;
for(i=0;i<M;i++)
{ if(i>0&&stu[i].score[N]!=stu[i-1].score[N])
k++;
printf("%4d",k);
printf(" %4d",stu[i].number);
printf(" %s",stu[i].name);
for(j=0;j<N+1;j++)
printf(" %6d",stu[i].score[j]);
printf("\n");
}
changesort(stu,M,0); /*对数据结构成绩进行排序*/
print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/
changesort(stu,M,1); /*对离散数学成绩进行排序*/
print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/
changesort(stu,M,2); /*对大学英语成绩进行排序*/
print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/
}
源代码结果:
请输入第 1 名学生分数:
姓 名: 小史
编 号: 01
数据结构: 87
离散数学: 90
大学英语: 78
请输入第 2 名学生分数:
姓 名: 小欣
编 号: 02
数据结构: 78
离散数学: 80
大学英语: 92
请输入第 3 名学生分数:
姓 名: 小宇
编 号: 03
数据结构: 88
离散数学: 76
大学英语: 95
请输入第 4 名学生分数:
姓 名: 小芷
编 号: 04
数据结构: 79
离散数学: 84
大学英语: 88
请输入第 5 名学生分数:
姓 名: 小析
编 号: 05
数据结构: 78
离散数学: 68
大学英语: 91
请输入第 6 名学生分数:
姓 名: 小彤
编 号: 06
数据结构: 88
离散数学: 76
大学英语: 90
学生总分成绩排序表
名次 学号 姓 名 数据结构 离散数学 大学英语 总 分
1 5 小析 78 68 91 237
2 2 小欣 78 80 92 250
3 4 小芷 79 84 88 251
4 6 小彤 88 76 90 254
5 1 小史 87 90 78 255
6 3 小宇 88 76 95 259
奇偶交换 成绩 1 排序表
名 次 学 号 姓 名 分 数
1 5 小析 78
1 2 小欣 78
2 4 小芷 79
3 1 小史 87
奇偶交换 成绩 2 排序表
名 次 学 号 姓 名 分 数
1 5 小析 68
2 6 小彤 76
2 3 小宇 76
3 2 小欣 80
奇偶交换 成绩 3 排序表
名 次 学 号 姓 名 分 数
1 1 小史 78
2 4 小芷 88
3 6 小彤 90
Press any key to continue
Change.c
#include "stdio.h"
#include "string.h"
#define M 6
#define N 3
void changesort(struct student a[],int n,int j);
void print_score(struct student a[],int n,int j);
struct student
{
char name[10];
int number;
int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/
}stu[M];
main()
{
int i,j,k;
for (i=0;i<M;i++) /*输入每个学生信息*/
{
printf("请输入第 %d 名学生分数: ",i+1);printf("\n");
printf("姓 名: ");
scanf("%s",stu[i].name);
printf("编 号: ");
scanf("%4d",&stu[i].number);
printf("数据结构: ");
scanf("%4d",&stu[i].score[0]);
printf("离散数学: ");
scanf("%4d",&stu[i].score[1]);
printf("大学英语: ");
scanf("%4d",&stu[i].score[2]);
}
for(i=0;i<M;i++) /*计算每个学生总分*/
{
stu[i].score[N]=0;
for(j=0;j<N;j++)
stu[i].score[N]+=stu[i].score[j];
}
changesort(stu,M,N); /*对总分进行排序*/
printf(" 学生总分成绩排序表\n");
printf(" 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分\n");
k=0;
for(i=0;i<M+1;i++)
{
if(i>0&&stu[i].score[N]!=stu[i-1].score[N])
{
k++;
printf("%4d",k);
printf(" %4d",stu[i-1].number);
printf(" %s",stu[i-1].name);
for(j=0;j<N+1;j++)
{
printf(" %6d",stu[i-1].score[j]);
}
}
printf("\n");
}
changesort(stu,M,0); /*对数据结构成绩进行排序*/
print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/
changesort(stu,M,1); /*对离散数学成绩进行排序*/
print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/
changesort(stu,M,2); /*对大学英语成绩进行排序*/
print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/
}
void changesort(struct student a[],int n,int j)
{
int flag=1,i;
struct student temp;
while(flag)
{
flag=0;
for(i=1;i<n-1;i+=2) /*对所有奇数项进行一遍比较*/
if (a[i].score[j] < a[i+1].score[j])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
for(i=0;i<n-1;i+=2) /*对所有偶数项进行一遍比较*/
if (a[i].score[j] < a[i+1].score[j])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
}
}
void print_score(struct student a[],int n,int j)
{
int i,k;
printf(" 奇偶交换 成绩 %d 排序表",j+1);
printf("\n");
printf(" 名 次 学 号 姓 名 分 数\n");
k=1;
for(i=0;k<N&&i<n;i++)
{
if(i>0&&a[i].score[j]!=a[i-1].score[j])
k++;
printf(" %4d ",k);
printf("%4d",a[i].number);
printf(" %s",a[i].name);
printf(" %6d",a[i].score[j]);
printf("\n");
}
}
升序改降序:
请输入第 1 名学生分数:
姓 名: 小史
编 号: 01
数据结构: 87
离散数学: 90
大学英语: 78
请输入第 2 名学生分数:
姓 名: 小欣
编 号: 02
数据结构: 78
离散数学: 80
大学英语: 92
请输入第 3 名学生分数:
姓 名: 小宇
编 号: 03
数据结构: 88
离散数学: 76
大学英语: 95
请输入第 4 名学生分数:
姓 名: 小芷
编 号: 04
数据结构: 79
离散数学: 84
大学英语: 88
请输入第 5 名学生分数:
姓 名: 小析
编 号: 05
数据结构: 78
离散数学: 68
大学英语: 91
请输入第 6 名学生分数:
姓 名: 小彤
编 号: 06
数据结构: 88
离散数学: 76
大学英语: 90
学生总分成绩排序表
名次 学号 姓 名 数据结构 离散数学 大学英语 总 分
1 3 小宇 88 76 95 259
2 1 小史 87 90 78 255
3 6 小彤 88 76 90 254
4 4 小芷 79 84 88 251
5 2 小欣 78 80 92 250
6 5 小析 78 68 91 237
奇偶交换 成绩 1 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 88
1 6 小彤 88
2 1 小史 87
3 4 小芷 79
奇偶交换 成绩 2 排序表
名 次 学 号 姓 名 分 数
1 1 小史 90
2 4 小芷 84
3 2 小欣 80
奇偶交换 成绩 3 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 95
2 2 小欣 92
3 5 小析 91
Press any key to continue
Seletsort.c
#include "stdio.h"
#include "string.h"
#define M 6
#define N 3
void changesort(struct student a[],int n,int j);
void print_score(struct student a[],int n,int j);
struct student
{
char name[10];
int number;
int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/
}stu[M];
main()
{
int i,j,k;
for (i=0;i<M;i++) /*输入每个学生信息*/
{
printf("请输入第 %d 名学生分数: ",i+1);printf("\n");
printf("姓 名: ");
scanf("%s",stu[i].name);
printf("编 号: ");
scanf("%4d",&stu[i].number);
printf("数据结构: ");
scanf("%4d",&stu[i].score[0]);
printf("离散数学: ");
scanf("%4d",&stu[i].score[1]);
printf("大学英语: ");
scanf("%4d",&stu[i].score[2]);
}
for(i=0;i<M;i++) /*计算每个学生总分*/
{
stu[i].score[N]=0;
for(j=0;j<N;j++)
stu[i].score[N]+=stu[i].score[j];
}
changesort(stu,M,N); /*对总分进行排序*/
printf(" 学生总分成绩排序表\n");
printf(" 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分\n");
k=0;
for(i=0;i<M+1;i++)
{
if(i>0&&stu[i].score[N]!=stu[i-1].score[N])
{
k++;
printf("%4d",k);
printf(" %4d",stu[i-1].number);
printf(" %s",stu[i-1].name);
for(j=0;j<N+1;j++)
{
printf(" %6d",stu[i-1].score[j]);
}
}
printf("\n");
}
changesort(stu,M,0); /*对数据结构成绩进行排序*/
print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/
changesort(stu,M,1); /*对离散数学成绩进行排序*/
print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/
changesort(stu,M,2); /*对大学英语成绩进行排序*/
print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/
}
void changesort(struct student a[],int n,int j)
{
int flag=1,i,m,k;
struct student temp;
while(flag)
{
flag=0;
for(i=0;i<n-1;i++) /*选择排序法*/
{
k=i;
for(m=i+1;m<n;m++)
if (a[m].score[j]>a[k].score[j])
{
k=m;
temp=a[i];
a[i]=a[k];
a[k]=temp;
flag=1;
}
}
}
}
void print_score(struct student a[],int n,int j)
{
int i,k;
printf(" 选择交换 成绩 %d 排序表",j+1);
printf("\n");
printf(" 名 次 学 号 姓 名 分 数\n");
k=1;
for(i=0;k<N&&i<n;i++)
{
if(i>0&&a[i].score[j]!=a[i-1].score[j])
k++;
printf(" %4d ",k);
printf("%4d",a[i].number);
printf(" %s",a[i].name);
printf(" %6d",a[i].score[j]);
printf("\n");
}
}
简单选择:
请输入第 1 名学生分数:
姓 名: 小史
编 号: 01
数据结构: 87
离散数学: 90
大学英语: 78
请输入第 2 名学生分数:
姓 名: 小欣
编 号: 02
数据结构: 78
离散数学: 80
大学英语: 92
请输入第 3 名学生分数:
姓 名: 小宇
编 号: 03
数据结构: 88
离散数学: 76
大学英语: 95
请输入第 4 名学生分数:
姓 名: 小芷
编 号: 04
数据结构: 79
离散数学: 84
大学英语: 88
请输入第 5 名学生分数:
姓 名: 小析
编 号: 05
数据结构: 78
离散数学: 68
大学英语: 91
请输入第 6 名学生分数:
姓 名: 小彤
编 号: 06
数据结构: 88
离散数学: 76
大学英语: 90
学生总分成绩排序表
名次 学号 姓 名 数据结构 离散数学 大学英语 总 分
1 3 小宇 88 76 95 259
2 1 小史 87 90 78 255
3 6 小彤 88 76 90 254
4 4 小芷 79 84 88 251
5 2 小欣 78 80 92 250
6 5 小析 78 68 91 237
选择交换 成绩 1 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 88
1 6 小彤 88
2 1 小史 87
3 4 小芷 79
选择交换 成绩 2 排序表
名 次 学 号 姓 名 分 数
1 1 小史 90
2 4 小芷 84
3 2 小欣 80
选择交换 成绩 3 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 95
2 2 小欣 92
3 5 小析 91
Press any key to continue
Bubblesort.c
#include "stdio.h"
#include "string.h"
#define M 6
#define N 3
void changesort(struct student a[],int n,int j);
void print_score(struct student a[],int n,int j);
struct student
{
char name[10];
int number;
int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/
}stu[M];
main()
{
int i,j,k;
for (i=0;i<M;i++) /*输入每个学生信息*/
{
printf("请输入第 %d 名学生分数: ",i+1);printf("\n");
printf("姓 名: ");
scanf("%s",stu[i].name);
printf("编 号: ");
scanf("%4d",&stu[i].number);
printf("数据结构: ");
scanf("%4d",&stu[i].score[0]);
printf("离散数学: ");
scanf("%4d",&stu[i].score[1]);
printf("大学英语: ");
scanf("%4d",&stu[i].score[2]);
}
for(i=0;i<M;i++) /*计算每个学生总分*/
{
stu[i].score[N]=0;
for(j=0;j<N;j++)
stu[i].score[N]+=stu[i].score[j];
}
changesort(stu,M,N); /*对总分进行排序*/
printf(" 学生总分成绩排序表\n");
printf(" 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分\n");
k=0;
for(i=0;i<M+1;i++)
{
if(i>0&&stu[i].score[N]!=stu[i-1].score[N])
{
k++;
printf("%4d",k);
printf(" %4d",stu[i-1].number);
printf(" %s",stu[i-1].name);
for(j=0;j<N+1;j++)
{
printf(" %6d",stu[i-1].score[j]);
}
}
printf("\n");
}
changesort(stu,M,0); /*对数据结构成绩进行排序*/
print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/
changesort(stu,M,1); /*对离散数学成绩进行排序*/
print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/
changesort(stu,M,2); /*对大学英语成绩进行排序*/
print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/
}
void changesort(struct student a[],int n,int j)
{
{
int flag=1,i;
struct student temp;
while(flag)
{
flag=0;
for(i=0;i<n;i++) /*冒泡排序法*/
if (a[i].score[j] < a[i+1].score[j])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
}
}
}
void print_score(struct student a[],int n,int j)
{
int i,k;
printf(" 冒泡交换 成绩 %d 排序表",j+1);
printf("\n");
printf(" 名 次 学 号 姓 名 分 数\n");
k=1;
for(i=0;k<N&&i<n;i++)
{
if(i>0&&a[i].score[j]!=a[i-1].score[j])
k++;
printf(" %4d ",k);
printf("%4d",a[i].number);
printf(" %s",a[i].name);
printf(" %6d",a[i].score[j]);
printf("\n");
}
}
运行结果:
请输入第 1 名学生分数:
姓 名: 小史
编 号: 01
数据结构: 87
离散数学: 90
大学英语: 78
请输入第 2 名学生分数:
姓 名: 小欣
编 号: 02
数据结构: 78
离散数学: 80
大学英语: 92
请输入第 3 名学生分数:
姓 名: 小宇
编 号: 03
数据结构: 88
离散数学: 76
大学英语: 95
请输入第 4 名学生分数:
姓 名: 小芷
编 号: 04
数据结构: 79
离散数学: 84
大学英语: 88
请输入第 5 名学生分数:
姓 名: 小析
编 号: 05
数据结构: 78
离散数学: 68
大学英语: 91
请输入第 6 名学生分数:
姓 名: 小彤
编 号: 06
数据结构: 88
离散数学: 76
大学英语: 90
学生总分成绩排序表
名次 学号 姓 名 数据结构 离散数学 大学英语 总 分
1 3 小宇 88 76 95 259
2 1 小史 87 90 78 255
3 6 小彤 88 76 90 254
4 4 小芷 79 84 88 251
5 2 小欣 78 80 92 250
6 5 小析 78 68 91 237
冒泡交换 成绩 1 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 88
1 6 小彤 88
2 1 小史 87
3 4 小芷 79
冒泡交换 成绩 2 排序表
名 次 学 号 姓 名 分 数
1 1 小史 90
2 4 小芷 84
3 2 小欣 80
冒泡交换 成绩 3 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 95
2 2 小欣 92
3 5 小析 91
Press any key to continue
Jusertsort.c
#include "stdio.h"
#include "string.h"
#define M 6
#define N 3
void changesort(struct student a[],int n,int j);
void print_score(struct student a[],int n,int j);
struct student
{
char name[10];
int number;
int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/
}stu[M];
main()
{
int i,j,k;
for (i=0;i<M;i++) /*输入每个学生信息*/
{
printf("请输入第 %d 名学生分数: ",i+1);printf("\n");
printf("姓 名: ");
scanf("%s",stu[i].name);
printf("编 号: ");
scanf("%4d",&stu[i].number);
printf("数据结构: ");
scanf("%4d",&stu[i].score[0]);
printf("离散数学: ");
scanf("%4d",&stu[i].score[1]);
printf("大学英语: ");
scanf("%4d",&stu[i].score[2]);
}
for(i=0;i<M;i++) /*计算每个学生总分*/
{
stu[i].score[N]=0;
for(j=0;j<N;j++)
stu[i].score[N]+=stu[i].score[j];
}
changesort(stu,M,N); /*对总分进行排序*/
printf(" 学生总分成绩排序表\n");
printf(" 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分\n");
k=0;
for(i=0;i<M+1;i++)
{
if(i>0&&stu[i].score[N]!=stu[i-1].score[N])
{
k++;
printf("%4d",k);
printf(" %4d",stu[i-1].number);
printf(" %s",stu[i-1].name);
for(j=0;j<N+1;j++)
{
printf(" %6d",stu[i-1].score[j]);
}
}
printf("\n");
}
changesort(stu,M,0); /*对数据结构成绩进行排序*/
print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/
changesort(stu,M,1); /*对离散数学成绩进行排序*/
print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/
changesort(stu,M,2); /*对大学英语成绩进行排序*/
print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/
}
void changesort(struct student a[],int n,int j)
{
int i, m;
struct student temp;
/*插入排序法*/
for(i=1; i<n; i++)
{
temp = a[i];
for(m=i; m>0 && temp.score[j] > a[m-1].score[j]; m--)
{
a[m] = a[m-1];
}
a[m] = temp;
}
}
void print_score(struct student a[],int n,int j)
{
int i,k;
printf(" 插入交换 成绩 %d 排序表",j+1);
printf("\n");
printf(" 名 次 学 号 姓 名 分 数\n");
k=1;
for(i=0;k<N&&i<n;i++)
{
if(i>0&&a[i].score[j]!=a[i-1].score[j])
k++;
printf(" %4d ",k);
printf("%4d",a[i].number);
printf(" %s",a[i].name);
printf(" %6d",a[i].score[j]);
printf("\n");
}
}
请输入第 1 名学生分数:
姓 名: 小史
编 号: 01
数据结构: 87
离散数学: 90
大学英语: 78
请输入第 2 名学生分数:
姓 名: 小欣
编 号: 02
数据结构: 78
离散数学: 80
大学英语: 92
请输入第 3 名学生分数:
姓 名: 小宇
编 号: 03
数据结构: 88
离散数学: 76
大学英语: 95
请输入第 4 名学生分数:
姓 名: 小芷
编 号: 04
数据结构: 79
离散数学: 84
大学英语: 88
请输入第 5 名学生分数:
姓 名: 小析
编 号: 05
数据结构: 78
离散数学: 68
大学英语: 91
请输入第 6 名学生分数:
姓 名: 小彤
编 号: 06
数据结构: 88
离散数学: 76
大学英语: 90
学生总分成绩排序表
名次 学号 姓 名 数据结构 离散数学 大学英语 总 分
1 3 小宇 88 76 95 259
2 1 小史 87 90 78 255
3 6 小彤 88 76 90 254
4 4 小芷 79 84 88 251
5 2 小欣 78 80 92 250
6 5 小析 78 68 91 237
插入交换 成绩 1 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 88
1 6 小彤 88
2 1 小史 87
3 4 小芷 79
插入交换 成绩 2 排序表
名 次 学 号 姓 名 分 数
1 1 小史 90
2 4 小芷 84
3 2 小欣 80
插入交换 成绩 3 排序表
名 次 学 号 姓 名 分 数
1 3 小宇 95
2 2 小欣 92
3 5 小析 91
Press any key to continue
心得体会
本学期开设的《数据结构基础》课程已经告一段落,现就学习体会进行学习总结.
这是一门纯属于设计的科目,它需用把理论变为上机调试。刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序。
这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。
刚开始学的时候确实有很多地方我很不理解,每次上上机课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。TC里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。在这一段努力学习的过程中,我们的编程设计有了明显的提高。
其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。
以上便是我对《数据结构基础》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!