数据结构专业课程设计方案报告模板参考
时间:2020-10-28 12:37:12 来源:勤学考试网 本文已影响 人
攀枝花学院
数据结构课程设计(论文)
题 目:散列表设计和实现
学生姓名: 刘攀 学 号: 20X
所在院(系): 数学和计算机学院
专 业: 网络工程
班 级: 二班
指 导 教 师: 蒋斌 职称: 副教授
20XX年 6 月 28 日
攀枝花学院教务处制
附件2:
攀枝花学院本科学生课程设计任务书
题 目
散列表设计和实现
1、课程设计目标
使学生深入了解和掌握课堂上所学多种基础抽象数据类型逻辑结构、存放结构和操作实现算法,和它们在程序中使用方法。
使学生掌握软件设计基础内容和设计方法,并培养学生进行规范化软件设计能力。
3) 使学生掌握使用多种计算机资料和相关参考资料,提升学生进行程序设计基础能力。
2、课程设计内容和要求(包含原始数据、技术要求、工作要求等)
【问题描述】
设计散列表实现电话号码查找系统。
【基础要求】
1) 设每个统计有下列数据项:电话号码、用户名、地址;
2) 从键盘输入各统计,分别以电话号码和用户名为关键字建立散列表;
3) 采取一定方法处理冲突;
4) 查找并显示给定电话号码统计;
5) 查找并显示给定用户名统计。
【深入完成内容】
1) 系统功效完善;
2) 设计不一样散列函数,比较冲突率;
3) 在散列函数确定前提下,尝试多种不一样类型处理冲突方法,考察平均查找长度改变。
3、关键参考文件
[1]刘大有等,《数据结构》(C语言版),高等教育出版社
[2]严蔚敏等,《数据结构》(C语言版),清华大学出版社
[3]William Ford,William Topp,《Data Structure with C++》清华大学出版社
[4]苏仕华等,数据结构课程设计,机械工业出版社
4、课程设计工作进度计划
分析题目,查阅相关资料:1天;
算法设计、数据结构设计:1天
编写代码并调试:1天
完成课程设计汇报:2天
指导老师(签字)
日期
年 月 日
教研室意见:
年 月 日
学生(签字):
接收任务时间: 年 月 日
注:任务书由指导老师填写。
附件3:
课程设计(论文)指导老师成绩评定表
题目名称
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,含有良好科学工作态度。
02
科学实践、调研
7
经过试验、试验、查阅文件、深入生产实践等渠道获取和课程设计相关材料。
03
课题工作量
7
按期圆满完成要求任务,工作量饱满。
能力
水平
35%
04
综合利用知识能力
10
能利用所学知识和技能去发觉和处理实际问题,能正确处理试验数据,能对课题进行理论分析,得出有价值结论。
05
应用文件能力
5
能独立查阅相关文件和从事其它调研;能提出并很好地叙述课题实施方案;有搜集、加工多种信息及获取新知识能力。
06
设计(试验)能力,方案设计能力
5
能正确设计试验方案,独立进行装置安装、调试、操作等试验工作,数据正确、可靠;研究思绪清楚、完整。
07
计算及计算机应用能力
5
含有较强数据运算和处理能力;能利用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或试验结果分析能力(综合分析能力、技术经济分析能力)
10
含有较强数据搜集、分析、处理、综合能力。
结果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或要求要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,叙述充足,结论严谨合理;试验正确,分析处理科学。
11
创新
10
对前人工作有改善或突破,或有独特见解。
成绩
指导老师评语
指导老师署名: 年 月 日
摘 要
信息社会高科技,商品经济化高效益,使计算机应用已普及到经济和社会生活各个领域。计算机即使和人类关系愈来愈亲密,还有些人因为计算机操作不方便继续用手工劳动。散列表设计和实现所包含到操作算法全部是以链表或次序表基础运算作为基础,此程序经过通讯录实现,包含建立通讯录,添加统计,查询统计,删除统计,显示统计,修改统计。经过次序表存放结构实现数据输入,实现各子程序过程演示,对异常输入信息报错。
关键字:新建通讯录,散列表,散列函数,处理冲突
目 录
TOC \o "1-3" \h \z \u 摘 要 V
1 课程设计目标和意义 1
2 需求分析 2
2.1 需求概述 2
2.2 需求环境 2
2.3 功效描述 2
3 整体设计(方案设计) 3
3.1 系统功效设计 3
3.2 处理功效设计 3
3.3 关键模块 5
3.4 算法模块设计 5
3.4.1 哈希算法 5
3.5 二次探测再散列 5
4 程序结构及源代码说明 6
4.1程序结构说明 6
4.1.1 哈希函数 6
4.1.2 冲突处理函数 6
4.2程序源码及说明 7
5 程序测试及运行结果说明 14
5.1 主菜单运行界面 14
5.2 各项功效测试 14
5.2.1用户信息录入 14
5.2.2 冲突处理 15
5.2.3 用户查找 15
总 结 16
参考文件 18
1 课程设计目标和意义
《数据结构》关键介绍部分最常见数据结构,说明多种数据结构内在逻辑关系,讨论其在计算机中存放表示,和在其上进行多种运算时实现算法,并对算法效率进行简单分析和讨论。数据结构是介于数学、计算机软件和计算机硬件之间一门计算机专业关键课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等关键基础,广泛应用于信息学、系统工程等多种领域。?
学习数据结构是为了将实际问题中所包含对象在计算机中表示出来并对它们进行处理。经过课程设计能够提升学生思维能力,促进学生综合应用能力和专业素质提升。经过此次课程设计关键达成以下目标:?
(1)了解并掌握数据结构和算法设计方法,含有初步独立分析和设计能力;?
(2)初步掌握软件开发过程问题分析、系统设计、程序编码、测试等基础方法和技能;?
(3)提升综合利用所学理论知识和方法独立分析和处理问题能力;?
(4)训练用系统见解和软件开发通常规范进行软件开发,培养软件工作者所应含有科学工作方法和作风。?
(5)锻炼动手操作能力,培养我们创新思维能力。从编写代码,到调试程序,再到运行程序,这是设计最关键步骤,它需要我们用逻辑思维将我们所学知识和实际相结合,并在对方案分析过程中能够有所创新,从而使运行方案更严谨更简练。培养好良好思维,便要将这种思维给予实践,即动手操作能力。现在,市场上相关计算机利用、计算机软件和电子类相关专业人才辈出,但毕业生在走进企业企业政府机构或研究单位以后,感觉到缺乏实际开发设计项目标经验,所以我们在课程设计中能够多训练,提升我们将知识融会贯通能力?
(6)培养我们严谨治学态度,和认清自己学知识、利用知识能力。
不管是编写代码,调试代码,还是运行代码,需要我们严谨思维和态度去对待,这么才能真正起到此设计作用。我们也能够在设计中认识到自己对数据结构这门课程学习欠缺,对以后我们学习有着很大指导和帮助。?学习课程设计,编写程序,将数据结构和算法相结合,了解到数据结构、算法和程序之间关系,更学习到数据结构和算法最好定位
2 需求分析
2.1 需求概述
在各个领域,不一样通讯录其功效全部是为用户储存信息,查找信息提供方便有效工具。一个内容全方面、功效优异通讯录对每个用户来说是一个理想助手。现在,我们经过对散列表和基础操作学习和了解,和在掌握线性表等基础运算基础上,实现对线性表操作。这里我们所做通讯录则是在数据结构学习以后,利用计算机c程序语言编写,能够实现数据新建通讯录,添加统计,查询统计,修改统计,删除统计,显示统计功效可实施程序。经过它能够进行对联络对象姓名、地址、电话号码等统计和查找。当然,该程序设计也有不足之处,我们一定会不停地努力去更正完善。
很多包含通讯录操作算法全部是以次序表操作为基础,经过次序表建立,初始化,结点添加、查询和删除演示,方便在学习中愈加好了解次序表结点添加、查询、删除过程
2.2 需求环境
本课程设计需要设备为硬件要求和软件配置要求具体要求以下:
①硬件要求:一台计算机。
②软件配置:WINDOWS、C/VC++6.0。
2.3 功效描述
此次课题是散列表设计和实现。关键是经过C++语言和数据结构算法实现,关键有以下功效:
1.每个统计需要有存放数据:姓名、电话、地址;
2.从键盘输入各统计,分别以电话号码和用户名为关键字建立散列表;
3.采取一定方法处理冲突;
4.查找并显示给定电话号码统计;
5.查找并显示给定用户名统计。
3 整体设计(方案设计)
3.1 系统功效设计
定义电话本统计数量(MAXSIZE)、表长(HASHSIZE)、姓名长度(MAX_SIZE)和结构体typedef struct内容,结构两个哈希函数hash1和hash2。
功效示意图:
录入子系统
录入子系统
查询子系统
姓名
地址
号码
姓名查找
号码查询
电话号码管理系统
图3.1功效示意图
3.2 处理功效设计
增加系统功效以下: 添加用户信息; 读取全部用户信息; 以姓名建立哈希表;以电话号码建立哈希表; 查找并显示给定用户名统计; 查找并显示给定电话号码统计; 清屏和保留功效;
处理步骤示意图:
开始
开始
进入录入系统
取得关键字key
用Hash1(key)计算地址
比较nam_2(d)值是否和关键字相等
输出统计
用探查序列d+i*hash2(key)计算(寻求)散列地址
结束
比较nam_Ht(d)值是否和关键字相等
未找到统计
图3.2 处理步骤图
3.3 关键模块
键盘输入各人信息:void getin();
显示输入用户信息:void ShowInformation();
除留余数法结构哈希函数:int Hash1();
结构把字符串转换成整型数哈希函数:int Hash2();
冲突处理函数:Status collision();
以姓名为关键字建表:void CreateHash1();
以姓名为关键字查表:void SearchHash1();
以电话号码为关键字建表:void CreateHash2();
以电话号码为关键字查表:void SearchHash2();
输出菜单函数:int main()。
3.4 算法模块设计
3.4.1 哈希算法
输入待查找值即key,即可查找到其对应值即可。
int Hash1(NA str){
long n;
int m;
n=fold(str);
m=n%HASHSIZE;
return m;
}
int Hash2(NA str){
long n;
int m;
n = atoi(str);.
m=n%HASHSIZE;
return m;
}
3.5 二次探测再散列
冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐一单元地查找,直到找到给定关键字,或碰到一个开放地址(即该地址单元为空)为止(若要插入,在探查到开放地址,则可将待插入新结点存人该地址单元)。查找时探查到开放地址则表明表中无待查关键字,即查找失败。
int i,q;
i=c/2+1;
while(i<HASHSIZE){
if(c%2==0){
c++;
q=(p+i*i)%HASHSIZE;
if(q>=0) return q;
else i=c/2+1;
}
else{
q=(p-i*i)%HASHSIZE;
c++;
if(q>=0) return q;
else i=c/2+1;}
4 程序结构及源代码说明
4.1程序结构说明
4.1.1 哈希函数
将用户名折叠处理,折叠处理后数,用除留余数法结构哈希函数。
建立,代码以下:
int Hash1(NA str){
long n;
int m;
n=fold(str);
m=n%HASHSIZE;
return m;
}
int Hash2(NA str){
long n;
int m;
n = atoi(str);.
m=n%HASHSIZE;
return m;
}
4.1.2 冲突处理函数
建立冲突处理函数,采取二次探测再散列法处理冲突,代码以下:
tatus collision(int p,int &c){
int i,q;
i=c/2+1;
while(i<HASHSIZE){
if(c%2==0){
c++;
q=(p+i*i)%HASHSIZE;
if(q>=0) return q;
else i=c/2+1;
}
else{
q=(p-i*i)%HASHSIZE;
c++;
if(q>=0) return q;
else i=c/2+1;
}
}
return UNSUCCESS;
}
4.2程序源码及说明
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<string>
#include <windows.h>
#define MAXSIZE 20 //电话薄统计数量
#define MAX_SIZE 20 //人名最大长度
#define HASHSIZE 53 //定义表长
#define SUCCESS 1
#define UNSUCCESS -1
#define LEN sizeof(HashTable)
typedef int Status;
typedef char NA[MAX_SIZE];
typedef struct{//统计
NA name;
NA tel;
NA add;
}Record;
typedef struct{//哈希表
Record *elem[HASHSIZE]; //数据元素存放基址
int count; //目前数据元素个数
int size; //目前容量
}HashTable;
Status eq(NA x,NA y){//关键字比较,相等返回SUCCESS;不然返回UNSUCCESS
if(strcmp(x,y)==0)
return SUCCESS;
else return UNSUCCESS;
}
Status NUM_BER; //统计个数
void getin(Record* a){//键盘输入各人信息
cout<<"输入要添加个数:\n";
cin>>NUM_BER;
int i;
for(i=0;i<NUM_BER;i++){
cout<<"请输入第"<<i+1<<"个统计用户名:\n";
cin>>a[i].name;
cout<<"请输入第"<<i+1<<"个统计电话号码:\n";
cin>>a[i].tel;
cout<<"请输入第"<<i+1<<"个统计地址:\n";
cin>>a[i].add; //gets(str2);
}
}
void ShowInformation(Record* a)//显示输入用户信息
{
int i;
for( i=0;i<NUM_BER;i++)
cout<<"\n第"<<i+1<<"个用户信息:\n 姓 名:"<<a[i].name<<"\n 电话号码:"<<a[i].tel<<"\n 联络地址:"<<a[i].add<<"\n";
}
void Cls(Record* a){
cout<<"*";
system("cls");
}
long fold(NA s){//人名折叠处理
char *p;
long sum=0;
NA ss;
strcpy(ss,s);//复制字符串,不改变原字符串大小写
strupr(ss);//将字符串ss转换为大写形式
p=ss;
while(*p!='\0')
sum+=*p++;
cout<<"\nsum===================="<<sum;
return sum;
}
int Hash1(NA str){//哈希函数
long n;
int m;
n=fold(str);//先将用户名进行折叠处理
m=n%HASHSIZE; //折叠处理后数,用除留余数法结构哈希函数
return m; //并返回模值
}
int Hash2(NA str){//哈希函数
long n;
int m;
n = atoi(str);//把字符串转换成整型数.
m=n%HASHSIZE; //用除留余数法结构哈希函数
return m; //并返回模值
}
Status collision(int p,int &c){//冲突处理函数,采取二次探测再散列法处理冲突
int i,q;
i=c/2+1;
while(i<HASHSIZE){
if(c%2==0){
c++;
q=(p+i*i)%HASHSIZE;
if(q>=0) return q;
else i=c/2+1;
}
else{
q=(p-i*i)%HASHSIZE;
c++;
if(q>=0) return q;
else i=c/2+1;
}
}
return UNSUCCESS;
}
void benGetTime();
void CreateHash1(HashTable* H,Record* a){//建表,以人姓名为关键字,建立对应散列表benGetTime();
int i,p=-1,c,pp;
for(i=0;i<NUM_BER;i++){
c=0;
p=Hash1(a[i].name);
pp=p;
while(H->elem[pp]!=NULL) {
pp=collision(p,c);
if(pp<0){
cout<<"第"<<i+1<<"统计无法处理冲突";//需要显示冲突次数时输出
continue;
}//无法处理冲突,跳入下一循环
}
H->elem[pp]=&(a[i]); //求得哈希地址,将信息存入
H->count++;
cout<<"第"<<i+1<<"个统计冲突次数为"<<c<<".\n";//需要显示冲突次数时输出
}
cout<<"\n建表完成!\n此哈希表容量为"<<HASHSIZE<<",目前表内存放统计个数为"<<H->count<<".\n";
benGetTime();
}
void SearchHash1(HashTable* H,int &c){//在通讯录里查找姓名关键字,若查找成功,显示信息
benGetTime();
NA str;
cout<<"\n请输入要查找统计姓名:\n";
cin>>str;
int p,pp;
p=Hash1(str);
pp=p;
while((H->elem[pp]!=NULL)&&(eq(str,H->elem[pp]->name)==-1))
pp=collision(p,c);
if(H->elem[pp]!=NULL&&eq(str,H->elem[pp]->name)==1){
cout<<"\n查找成功!\n查找过程冲突次数为"<<c<<".以下是您需要要查找信息:\n\n";
cout<<"姓 名:"<<H->elem[pp]->name<<"\n电话号码:"<<H->elem[pp]->tel<<"\n联络地址:"<<H->elem[pp]->add<<"\n";
}
else cout<<"\n此人不存在,查找不成功!\n";
benGetTime();
}
void benGetTime(){
SYSTEMTIME sys;
GetLocalTime( &sys );
cout<<sys.wYear<<sys.wMonth<<sys.wDay<<sys.wHour<<sys.wMinute<<sys.wSecond<<sys.wMilliseconds;
}
void CreateHash2(HashTable* H,Record* a){//建表,以电话号码为关键字,
benGetTime();
int i,p=-1,c,pp;
for(i=0;i<NUM_BER;i++){
c=0;
p=Hash2(a[i].tel);
pp=p;
while(H->elem[pp]!=NULL) {
pp=collision(p,c);
if(pp<0){
cout<<"第"<<i+1<<"统计无法处理冲突";//需要显示冲突次数时输出
continue;
}//无法处理冲突,跳入下一循环
}
H->elem[pp]=&(a[i]); //求得哈希地址,将信息存入
H->count++;
cout<<"第"<<i+1<<"个统计冲突次数为"<<c<<"。\n";//需要显示冲突次数时输出
}
cout<<"\n建表完成!\n此哈希表容量为"<<HASHSIZE<<",目前表内存放统计个数为"<<H->count<<".\n";
benGetTime();
}
void SearchHash2(HashTable* H,int &c){//在通讯录里查找电话号码关键字,若查找成功,显示信息
benGetTime();
NA tele;
cout<<"\n请输入要查找统计电话号码:\n";
cin>>tele;
int p,pp;
p=Hash2(tele);
pp=p;
while((H->elem[pp]!=NULL)&&(eq(tele,H->elem[pp]->tel)==-1))
pp=collision(p,c);
if(H->elem[pp]!=NULL&&eq(tele,H->elem[pp]->tel)==1){
cout<<"\n查找成功!\n查找过程冲突次数为"<<c<<".以下是您需要要查找信息:\n\n";
cout<<"姓 名:"<<H->elem[pp]->name<<"\n电话号码:"<<H->elem[pp]->tel<<"\n联络地址:"<<H->elem[pp]->add<<"\n";
}
else cout<<"\n此人不存在,查找不成功!\n";
benGetTime();
}
void Save(){
FILE *fp;
if((fp=fopen("c:\test.txt", "w"))==NULL){
printf("\nERROR opening customet file");
}
fclose(fp);
}
int main(int argc, char* argv[]){
int c,flag=1;
HashTable *H;
H=(HashTable*)malloc(LEN);
for(int i=0;i<HASHSIZE;i++)
H->elem[i]=NULL;
H->size=HASHSIZE;
H->count=0;
Record a[MAXSIZE];
while (1){
cout<<"\n ┏━━━━━━━━━━━━━━━━━━━━━┓ ";
cout<<"\n ┃ 欢迎使用电话号码查找系统 ┃ ";
cout<<"\n ┏〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓┓";
cout<<"\n ┃★ ★ ★ ★ ★ ★ ★哈希表设计和实现★ ★ ★ ★ ★ ★ ★┃";
cout<<"\n ┃ 【1】. 添加用户信息 ┃";
cout<<"\n ┃ 【2】. 读取全部用户信息 ┃";
cout<<"\n ┃ 【3】. 以姓名建立哈希表(再哈希法处理冲突) ┃";
cout<<"\n ┃ 【4】. 以电话号码建立哈希表(再哈希法处理冲突) ┃";
cout<<"\n ┃ 【5】. 查找并显示给定用户名统计 ┃";
cout<<"\n ┃ 【6】. 查找并显示给定电话号码统计 ┃";
cout<<"\n ┃ 【7】. 清屏 ┃";
cout<<"\n ┃ 【8】. 保留 ┃";
cout<<"\n ┃ 【9】. 退出程序 ┃";
cout<<"\n ┃ 温馨提醒: ┃";
cout<<"\n ┃ Ⅰ.进行5操作前 请先输出3 ┃";
cout<<"\n ┃ Ⅱ.进行6操作前 请先输出4 ┃";
cout<<"\n ┗〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓┛";
cout<<"\n";
cout<<"请输入一个任务选项>>>";
cout<<"\n";
int num;
cin>>num;
switch(num){
case 1:
getin(a);
break;
case 2:
ShowInformation(a);
break;
case 3:
CreateHash1(H,a); /* 以姓名建立哈希表 */
break;
case 4:
CreateHash2(H,a); /* 以电话号码建立哈希表 */
break;
case 5:
c=0;
SearchHash1(H,c);
break;
case 6:
c=0;
SearchHash2(H,c);
break;
case 7:
Cls(a);
break;
case 8:
Save();
break;
case 9:
return 0;
break;
default:
cout<<"你输错了,请重新输入!";
cout<<"\n";
}
}
system("pause");
return 0;
}
5 程序测试及运行结果说明
由需求分析可知,散列表设计和实现关键电话号码查找功效,本程序已调试成功并实现了其功效,其运行结果以下:
5.1 主菜单运行界面
主菜单运行界面图5.1所表示:
图5.1 主菜单运行界面
5.2 各项功效测试
5.2.1用户信息录入
用户信息录入图5.2:
图5.2用户信息录入
5.2.2 冲突处理
冲突处理界面图5.3:
图5.3 冲突处理
5.2.3 用户查找
用户查找界面图5.4:
图5.4 用户查找
总 结
数据结构课程设计是大课时期第二个专业课课程设计而数据结构这门课也是本学期一门专业课 经过一个学期对数据结构学习 应该说对这门课只有初步认识掌握并不是那么牢靠。不过学期末课程设计又教会了我该怎样简单去利用数据结构去处理问题。
数据结构算法和之前学习 c 语言有着部分区分在设计中不能一味去用原来 c 语言去实现算法和函数。
设计时能够为程序定义全局变量也能够为程序定义局部变量全局变量能够让程序看起来比较简练局部变量虽说比较繁琐不过易懂且避免了部分无须要错误发生。
在此次课程设计中分别用到了指针和引用两种不一样方法来设计程序二者各有利弊但最终选择指针作为最终版本所用到。
这一次我选择课程设计题目是散列表设计和查找能够说经过一个多星期设计不管是经过自己努力、 查资料还是问询她人该怎样做全部是让我愈加熟悉这一模块内容掌握了哈希表其中部分使用方法比如说折叠法除留余数法处理冲突线性探测再散列和二次探测再散列等部分实用方法。
当然这一部分不是只有这么部分内容还包含了其它建立哈希表和处理冲突方法即使教材中介绍比较简单但仍然包含了更多知识就像整个数据结构一样一本教材是不可能把全部知识点全部讲到只是给我们介绍了部分基础知识部分可能用到相对来说比较简单方法来处理碰到问题这些方法知识对于我们现在处一个阶段就已经很实用不能因为掌握了这一模块或是这一本书就认为掌握了数据结构全部。
在课程设计中我很清楚认识到了自己不足而自己最大不足就是少练对部分算法掌握不熟练结构函数时不知该怎样使它来符合要求碰到了部分困难困扰在查阅资料以后才能略微明白这些错误到底是什么在自己实践操作下也是根本明白了函数所要求和指针利用错误。
还有一点不足就是基础知识掌握不牢靠此次课程设计又把哈希表部分内容反反复复看尤其是哈希表算法将此部分一点一点弄明白才开始动手设计程序。
而在不停地学习和设计中自己也对数据结构产生了浓厚爱好了解了它实用性和可操作性使得程序设计起来不再是那么复杂和繁琐易懂也是它一个有点。
数据结构课程设计结束也是代表了这个学期数据结构结束当然数据结构这门学问仍然充满了吸引力让我们去探索这是一个结束一样也是一个开始掌握好了基础才能更深入学习和研究。
这一次课程数据也是给了我一个教训一定要把基础掌握住才能练习才能做设计。
数据结构学习给我其它科目标学习提供了一定帮助杜绝眼高手低边学边练为我接下来多个学期对其它专业课学习提供了宝贵经验。这一次两个星期课程设计给了我足够时间来让我掌握该部分知识而且了解到数据结构奥妙所在给了我以后努力学习数据结构动力程序成功设计也给了我一定自信不再害怕自己设计程序时碰到错误而要勇于面对它程序中错误是一定会被部分简单实用方法给处理掉。
程序设计完成而且运行无误自己也是对自己感到满意对自己以后学习其它计算机语言也是打下了自信基础并有了这一次经历和所取得经验也是对以后学习提供了保障。
参考文件
[1]《数据结构》(C语言版),严蔚敏,清华大学出版社,20XX.
[2]《数据结构题集》,严蔚敏,清华大学出版社,20XX.
[3]《数据结构》(C语言版),刘大有,高等教育出版社,20XX.
[4]《Data Structure with C++》,William Ford.William Topp,清华大学出版社,20XX.