东华理工大学《数据结构》课程设计_同学录课程设计

东华理工大学《数据结构》课程设计_同学录课程设计
东华理工大学《数据结构》课程设计_同学录课程设计

《数据结构与算法设计》课程设计报告

题目:同学录

学生姓名:江一翀

学号: 201320182021

班级: 1321820

指导教师:王强

2015年1月9日

东华理工理工大学

摘要

随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的同学录管理系统,

电子同学录在科技发展的现代是非常重要的,它具有轻便,快捷且不占存储空间的优点,有效的解决了纸质同学占用空间,不方便查找且容易丢失的问题。特别是当同学录的信息量很大的时候,这个系统就更显得尤为重要了

1 问题描述

(1)题目内容:通讯录管理。

(2)基本要求:利用单链表实现通讯录的建立、通讯者的插入、通讯者的删除、通讯者的查询以及通讯录的输出。

(3)设计目的:设计目的:

1.掌握线性表的数据存储。

2.掌握线性表的基本操作。

3.掌握查找的基本算法。

具体功能:

1.对同学基本信息进行录入,应能分类录入不同阶段的同学信息,同学信息包括同学姓名、身份证号、联系电话、qq号码、爱好、联系地址、邮箱等信息;

2.对同学信息进行查询,可按同学姓名、地址、年龄段等多种方式进行查询;

3.对同学信息进行排序,可按同学姓名、年龄、地址、qq号等多种方式查询;;

4.对同学信息进行修改;

5.对同学信息进行删除;

2 需求分析

经过本次的课程设计,我认为通讯录主要实现的功能如下:

(1)添加信息:一个通讯录应该有其基本的添加功能。在程序设计时,我通过一个具有添加功能的函数,实现了个人信息的添加,如:姓名,性别,电话号码,QQ号码,地址。

(2)删除信息:当你不需要某个联系人的信息时,可以直接将该人的

信息删除。

(3)查找:一个通讯录应该具有令一基本功能就是查找,本设计时可以按联系人为关键字查找的,只要你输入要查找人的姓名或手机号码或QQ号码就可出来相应的个人信息。

(4)输出:一个通讯录应该具有输出所有联系人的功能,本设计按照次序可以从头到尾把通讯录中的所有联系人都输出,供自己查看。(5)退出:当你做完你要做的事情之后,就可以退出该程序。

3 总体设计

3.1 算法的定义

LinkList Creat_LinkList()创建空单链表

void Insert_LinkList(LinkList H)建立通讯录,录入联系人的信息,可以把联系人的姓名,性别,手机号,QQ号,地址录入系统。

void Locate_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码查找通讯录中联系人的信息。

void Delete_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码删除联系人的所有信息。

void print_LinkList(LinkList H)输出通讯录中的所有联系人的信息供使用者查看。

3.2 系统流程图

图3-1通讯录管理功能图3.3 详细程序设计

1)定义数据结构

typedef struct Node //定义数据结构

{

char name[20];//姓名

char sex[4]; //性别

char tel[11];//电话号码

char qq[13]; //qq号码

char ad[100];//地址

Node *next;//存放后继元素的地址

}LNode,*LinkList;

2)创建一个空的单链表

LinkList Creat_LinkList()

{//创建空单链表,入口参数无

LinkList H;

H=new LNode;

if(H)//确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表

{

H->next=NULL;

}

return H;

}

3)向通讯录中插入联系人

void Insert_LinkList(LinkList H)

{

LinkList p;

p=new LNode;

if(!p)

{

cout<<"不能插入!"<

}

cout<<"请输入你要插入的联系人信息:"<

cout<<"姓名:"<

cin>>p->name;

cout<<"性别:"<

cin>>p->sex;

cout<<"手机号码:"<

cin>>p->tel;

cout<<"QQ号码:"<

cin>>p->qq;

cout<<"地址:"<

cin>>p->ad;

p->next=H->next;

H->next=p;

cout<<"插入成功"<

}

4)查询通讯录中某个联系人的信息

void Locate_LinkList(LinkList H)

{

int x;

LinkList p=H->next;

cout<<"你要通过哪种方式查询?"<

cout<<"1.通过联系人姓名查询"<

cout<<"2.通过联系人手机号码查询"<

cout<<"3.通过联系人QQ号码查询"<

cin>>x;

char str[30];

if(x==1)

{

cout<<"请输入你要查询的联系人的姓名:";

cin>>str;

while(p && strcmp(p->name,str)!=0)

{

p=p->next;

}

}

if(x==2)

{

cout<<"请输入你要查询的联系人的手机号码:";

cin>>str;

while(p&&strcmp(p->tel,str)!=0)

{

p=p->next;

}

}

if(x==3)

{

cout<<"请输入你要查询的联系人的QQ号码:";

cin>>str;

while(p&&strcmp(p->qq,str)!=0)

{

p=p->next;

}

}

if(p==NULL)

{

cout<<"没有找到你要查找的联系人的信息!"<

}

else

{

cout<<"你要找的联系人的信息为:"<

cout<<"姓名:"<name<

cout<<"性别:"<sex<

cout<<"手机号:"<tel<

cout<<"QQ号码"<qq<

cout<<"地址"<ad<

}

}

5)删除通讯录中某个联系人的信息

void Delete_LinkList(LinkList H)

{

if(H->next==NULL)

{

cout<<"通讯录为空,不能删除"<

}

else

{

int x;

char str[30];

LinkList p,q;

p=H->next;

cout<<"请输入你要删除的方式:"<

cout<<"1.按照联系人的姓名删除"<

cout<<"2.按照联系人的手机号码删除"<

cout<<"3.按照联系人的QQ号码删除"<

cin>>x;

q=H;

if(x==1)

{

cout<<"请输入你要删除的联系人的姓名:"<

cin>>str;

while(strcmp(p->name,str)!=0)

{

q=p;

p=p->next;

}

}

if(x==2)

{

cout<<"请输入你要删除的联系人的手机号码:"<

cin>>str;

while(strcmp(p->tel,str)!=0)

{

q=p;

p=p->next;

}

}

if(x==3)

{

cout<<"请输入你要删除的联系人的QQ号码:"<

cin>>str;

while(strcmp(p->qq,str)!=0)

{

q=p;

p=p->next;

}

}

if(p==NULL)

{

cout<<"没有你要删除的联系人的记录"<

}

else

{

q->next=p->next;

p->next=NULL;

free(p);

cout<<"该联系人已删除"<

}

}

}

6)输出所有联系人

void print_LinkList(LinkList H)

{

if(H->next==NULL)

{

cout<<"通讯录为空"<

}

else

{

LinkList p;

p=H->next;

while(p!=NULL)

{

cout<<"性别:"<sex<

cout<<"手机号:"<tel<

cout<<"QQ号码:"<qq<

cout<<"地址:"<ad<

p=p->next;

}

}

}

7)主函数

void main()

{

int a;

LinkList List;

List=Creat_LinkList();

do

{

cout<<"————欢迎进入通讯录管理————"<

cout<<"————添加联系人请按1————"<

cout<<"————查找联系人请按2————"<

cout<<"————删除联系人请按3————"<

cout<<"————输出所有联系人请按4————"<

cout<<"————退出请按0————"<

cout<<"请输入你的选择:"<

cin>>a;

switch(a)

{

case 0:break;

case 1:Insert_LinkList(List);

break;

case 2:Locate_LinkList(List);

break;

case 3:Delete_LinkList(List);

break;

case 4:print_LinkList(List);

break;

}

cout<<"操作完毕,请再次选择!"<

}

while(a!=0);

}

3.4 测试

运行程序,看到主界面。有六个选项:1添加联系人。2按姓名删除联系人。3输出所有联系人。4按姓名查找联系人.5退出该程序。

按1进入建立联系人;接着提示,输入联系人的姓名,性别,手机号,QQ号,地址。输入之后自动显示下一个联系人的输入,如果不想继续添加联系人则可以按回车键返回主界面。

按2为查找联系人,系统默认的有三个选项,可以选择通过联系人的姓名查找,通过联系人的手机号码查找和通过联系人的QQ号码查找。查找成功后直接输出联系人的信息,然后返回主界面。

按3为删除联系人信息,和查找相似删除联系人也有三种删除方式:按照联系人的姓名删除,按照联系人的手机号码删除和按照联系人的QQ号码删除。删除成功后会提示删除成功并且自动返回主界面。

按4为输出所有联系人信息,可以将通讯录中的所有联系人的信息都输出来,成功之后直接输出所有联系人信息,并且自动返回主界面。

图3.4-5 输出通讯录中所有联系人的信息

按0为退出该程序。选择之后会出现Press any key to continue,然后按任意键就可以直接退出该程序。

程序中加入一些提示增加程序的健壮性,如插入,删除联系人会有成功提示,每次操作也都有提示,操作错误也会有提示等。

4 总结

通过对数据结构这门课的学习,我了解到:“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构的研究不仅涉及到计算机硬件(特别是编码理论、存储装置和存取方法等)的研究,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。在研究信息检索时也必须考虑如何组织数据,以便使查找和存取数据元素更为方便。可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一个

核心内容,是从事计算机科学研究及其应用的科技工作者必须掌握的重要内容。

经过这次课程设计,我体会到自己所学的东西太少了,很多都不知道。做这课程设计让我认识到仅仅看书是不够的,要经常动手写程序,上机调试是最重要的。

在课程设计中我更体会到:一个好的程序应该是一个所占空间小、运行时间短、其他性能也好的算法。然而,实际上很难做到十全十美,原因是上述要求有时相互抵触。要节约算法的执行时间往往要以牺牲更多的存储空间为代价;而为了节省存储空间又可能要以更多的时间作为代价。因此,只能根据具体情况有所侧重:如果程序的使用次数较少,则应该力求算法简明易懂,而易于转换为上机程序;如果程序反复多次使用,则应该尽可能选用快速的算法;如果待解决的问题数据量极大,机器的存储空间较小,则在编写算法时应该考虑如何节省空间。以后在编写程序时就应该注意到所编写程序的时间复杂度,以及是否运用了良好的算法,而不能只是象以前编写程序时单纯使用C++的知识,要充分考虑程序的性能,争取编写出更优良的程序来。

5 源程序(附)

#include

#include

#include

#include

typedef struct Node //定义数据结构

{

char name[20];//姓名

char sex[4]; //性别

char tel[20];//电话号码

char qq[13]; //qq号码

char ad[100];//地址

Node *next;//存放后继元素的地址

}LNode,*LinkList;

LinkList Creat_LinkList()

{//创建空单链表,入口参数无

LinkList H;

H=new LNode;

if(H)//确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表

{

H->next=NULL;

}

return H;

}

//插入通讯录

void Insert_LinkList(LinkList H)

{

LinkList p;

p=new LNode;

if(!p)

{

cout<<"不能插入!"<

}

cout<<"请输入你要插入的联系人信息:"<

cout<<"姓名:"<

cin>>p->name;

cout<<"性别:"<

cin>>p->sex;

cout<<"手机号码:"<

cin>>p->tel;

cout<<"QQ号码:"<

cin>>p->qq;

cout<<"地址:"<

cin>>p->ad;

p->next=H->next;

H->next=p;

cout<<"插入成功"<

}

//查询通讯录

void Locate_LinkList(LinkList H)

{

int x;

LinkList p=H->next;

cout<<"你要通过哪种方式查询?"<

cout<<"1.通过联系人姓名查询"<

cout<<"2.通过联系人手机号码查询"<

cout<<"3.通过联系人QQ号码查询"<

cin>>x;

char str[30];

if(x==1)

{

cout<<"请输入你要查询的联系人的姓名:";

cin>>str;

while(p && strcmp(p->name,str)!=0)

{

p=p->next;

}

}

if(x==2)

{

cout<<"请输入你要查询的联系人的手机号码:";

cin>>str;

while(p&&strcmp(p->tel,str)!=0)

{

p=p->next;

}

}

if(x==3)

{

cout<<"请输入你要查询的联系人的QQ号码:";

cin>>str;

while(p&&strcmp(p->qq,str)!=0)

{

p=p->next;

}

}

if(p==NULL)

{

cout<<"没有找到你要查找的联系人的信息!"<

}

else

{

cout<<"你要找的联系人的信息为:"<

cout<<"姓名:"<name<

cout<<"性别:"<sex<

cout<<"手机号:"<tel<

cout<<"QQ号码:"<qq<

cout<<"地址:"<ad<

}

}

//删除联系人

void Delete_LinkList(LinkList H)

{

if(H->next==NULL)

{

cout<<"通讯录为空,不能删除"<

}

else

{

int x;

char str[30];

LinkList p,q;

p=H->next;

cout<<"请输入你要删除的方式:"<

cout<<"1.按照联系人的姓名删除"<

cout<<"2.按照联系人的手机号码删除"<

cout<<"3.按照联系人的QQ号码删除"<

cin>>x;

q=H;

if(x==1)

{

cout<<"请输入你要删除的联系人的姓名:"<

cin>>str;

while(strcmp(p->name,str)!=0)

{

q=p;

p=p->next;

}

}

if(x==2)

{

cout<<"请输入你要删除的联系人的手机号码:"<

cin>>str;

while(strcmp(p->tel,str)!=0)

{

q=p;

p=p->next;

}

}

if(x==3)

{

cout<<"请输入你要删除的联系人的QQ号码:"<

cin>>str;

while(strcmp(p->qq,str)!=0)

{

q=p;

p=p->next;

}

}

if(p==NULL)

{

cout<<"没有你要删除的联系人的记录"<

}

else

{

q->next=p->next;

p->next=NULL;

free(p);

cout<<"该联系人已删除"<

}

}

}

//输出所有联系人

void print_LinkList(LinkList H)

{

if(H->next==NULL)

{

cout<<"通讯录为空"<

}

else

{

LinkList p;

p=H->next;

while(p!=NULL)

{

cout<<"性别:"<sex<

cout<<"手机号:"<tel<

cout<<"QQ号码:"<qq<

cout<<"地址:"<ad<

p=p->next;

数据结构课程设计

1.一元稀疏多项式计算器 [问题描述] 设计一个一元稀疏多项式简单计算器。 [基本要求] 输入并建立多项式; 输出多项式,输出形式为整数序列:n, c1, e1, c2, e2,……, cn, en ,其中n是多项式的项数,ci, ei分别是第i项的系数和指数,序列按指数降序排序; 多项式a和b相加,建立多项式a+b; 多项式a和b相减,建立多项式a-b; [测试数据] (2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9-x+12x-3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(x5+x2+x+1) (x+x3)+(-x-x3)=0 (x+x2+x3)+0=(x3+x2+x) [实现提示] 用带头结点的单链表存储多项式,多项式的项数存放在头结点中。 2.背包问题的求解 [问题描述] 假设有一个能装入总体积为T的背包和n件体积分别为w1, w2, …,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的体积为{1,8,4,3,5,2}时,可找到下列4组解:(1,4,3,2)、(1,4,5)、(8,2)、(3,5,2) [实现提示] 可利用回溯法的设计思想来解决背包问题。首先,将物品排成一列,然后顺序选取物品转入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品“太大”不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取,如此重复,直至求得满足条件的解,或者无解。 由于回溯求解的规则是“后进先出”因此自然要用到栈。 3.完全二叉树判断 用一个二叉链表存储的二叉树,判断其是否是完全二叉树。 4.最小生成树求解(1人) 任意创建一个图,利用克鲁斯卡尔算法,求出该图的最小生成树。 5.最小生成树求解(1人) 任意创建一个图,利用普里姆算法,求出该图的最小生成树。 6.树状显示二叉树 编写函数displaytree(二叉树的根指针,数据值宽度,屏幕的宽度)输出树的直观示意图。输出的二叉树是垂直打印的,同层的节点在同一行上。 [问题描述] 假设数据宽度datawidth=2,而屏幕宽度screenwidth为64=26,假设节点的输出位置用 (层号,须打印的空格数)来界定。 第0层:根在(0,32)处输出;

网上校友录的设计与实现

学院名称: 计算机工程学院 专 业: 计算机科学与技术 学 期: 12~13-1 日期: 12.25~01.06 班 级: 10计1 学号: 10141122 姓 名: 张栋梁 教师姓名: 蔡秋茹 学 分: 3.5 成绩: https://www.360docs.net/doc/6a1083250.html, 课程设计

网上校友录的设计与实现 【摘要】同学录,又叫校友录,也是校友录网站的简称。本系统参考了Chinaren校友录的常用功能和模式,结合平常了解到的班级同学的实际需求,实现了班级成员之间常用信息的共享、班级留言、班级通讯录、学校和班级的查询、班级管理和系统后台管理等功能。该系统前台使用Microsoft Visual Studio. NET2005中的https://www.360docs.net/doc/6a1083250.html,技术进行开发,后台数据库采用ACCESS2003,并通过IIS进行发布。本文主要介绍了本课题的研究背景、完成的功能和各个模块的详细设计过程。 【关键词】同学录;数据库;ASP;Access 【实验要求】 本课题是用https://www.360docs.net/doc/6a1083250.html,技术来实现的。主要包含以下内容: 1.登录信息管理:包含用户注册、用户登录和修改个人信息功能。 2.班级信息管理:包含班级的创建和维护功能,以及班级照片管理功能。 3.通信录的管理:包含添加、查看、修改和删除教师与学生的通信录。 4.留言消息管理:包含发表、编辑、查看和删除留言消息功能。 5.管理员的功能:对注册用户和用户建立的班级进行管理并对网站的参数进行定义的功能。 网站建设的主要基本目标为: 1.登录信息管理:对于普通用户,只有通过用户注册,注册成功后才可以登录本系统;用户还可以通过修改个人信息功能对自己的信息加以修改。而管理通过登录,实现对网站更好的服务和管理。 2.班级信息管理:通过对班级管理员的申请,进行对班级的信息,成员进行管理。 3.通信录的管理:通过添、删、改等基本操作完善教师与学生的通讯信息。 4.留言信息管理:通过添、删、改等基本操作用户可以留言;或发表论坛新

13浙江理工数据结构真题

浙江理工大学 2013年硕士学位研究生招生入学考试试题 考试科目:数据结构代码:991 (请考生在答题纸上答题,在此试题纸上答题无效) 一、单选题(在每小题的四个备选答案中选出一个正确答案。每小题2分,共20分。) 1.链表不具备的特点是______。 A. 可随机访问任一结点 B. 插入删除不需要移动元素 C. 不必事先估计存储空间 D. 所需空间与其长度成正比 2.设线性表有n个元素,以下算法中,在顺序表上实现比在链表上实现效率更高。 A. 交换第0个元素与第1个元素的值 B. 顺序输出这n个元素的值 C. 输出第i(0≤i≤n-1)个元素值 D. 输出与给定值x相等的元素在线性表中的序号 3.设输入序列为a、b、c、d,则借助栈所得到的输出序列不可能是_________。 A. a、b、c、d B. d、c、b、a C. a、c、d、b D. d、a、b、c 4.为解决计算机主机与打印机之间的速度不匹配问题,通常设计一个打印数据缓冲区,主机将要 输出的数据依次写入到该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是。 A. 栈 B. 队列 C. 树 D. 图 5.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有 个空指针域。 A. 2m B. 4m C. 2m+1 D. 2m -1 6.二叉树若用顺序存储结构表示,则下列四种运算中最容易实现。 A. 先序遍历二叉树 B. 层次遍历二叉树 C. 中序遍历二叉树 D. 后序遍历二叉树 7.以下关于有向图的说法正确的是。 A. 强连通图是任何顶点到其他所有顶点都有边 B. 完全有向图一定是强连通图 C. 有向图中某顶点的入度等于出度 D. 有向图边集的子集和顶点集的子集可构成原有向图的子图 8.若一个有向图中的顶点不能排成一个拓扑结构序列,则可断定该有向图____________。 A. 含有多个出度为0的顶点 B. 是个强连通图 C. 含有多个入度为0的顶点 D. 含有顶点数目大于1的强连通分量 9.顺序查找法适合于存储结构为的线性表。 A. 哈希存储 B. 压缩存储 C. 顺序存储或链式存储 D. 索引存储 10.在所有排序方法中,关键字比较的次数与记录地初始排列次序无关的是。 A. shell排序 B.冒泡排序 C. 直接插入排序 D. 简单选择排序

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

同学录课程设计

湖南财政经济学院课程设计 课程面向对象程序设计和数据库开发技术 题目同学录管理系统 专业电子商务 班级2010级电子商务一班 姓名彭娟 指导教师龚春红 2012 年 1 月 6 日

一、 课程设计目的 1.登录信息管理:对于普通用户,只有通过用户注册,注册成功后才可以登录本系统;用户还可以通过修改个人信息功能对自己的信息加以修改。而管理员通过登录,实现对网站更好的服务和管理。 2.留言信息管理:通过添、删、改等基本操作用户可以留言;或发表留言,对其留言进行回复,当然还可以进行编辑、删除留言与回复。 3.管理员的功能:通过此功能实现对注册用户和用户进行管理。 二、系统需求分析(简要描述系统业务和功能,开发环境)。 2.1业务流分析 业务流程图, 就是用一些规定的符号及连接来表示某个具体的业务处理过程[3]。在对系统的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关该业务流程的资料都串起来作进一步的分析。业务流程分析可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。 同学录系统的业务流程:首先由用户注册,登陆系统就可以进行发表留言等操作,用户还可以删除自己的留言、修改个人资料、修改个人密码,系统管理员初了拥有一般用户的权限以外还可以进行用户管理,留言管理等操作。所有用户都可以查询同学,查看留言。 本系统的业务流程如下图2.1所示: 登陆系统 注册 未注册用户 已注册用户 系统管理员 查询 发表 修改 上传 删除 各种信息 所有用户 写入 图2.1 系统业务流程图 后台数据库

青岛理工大学算法与数据结构期末试题

1.数据的最小单位是()。 A.数据项 B.数据类型 C.数据元素 D.数据变量 2.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。编号为49的结点X的双亲编号为( ) A.24 B.25 C.23 D.无法确定 3.一个具有n个顶点的无向完全图的边数为( ) A.n(n+1)/2 B.n(n-1)/2 C.n(n-1) D.n(n+1) 4. 设二维数组A[6][10],每个数组元素占用4个存储单元,若按行优先顺序存放的数组元素,a[0][0]的存储地址为860,则a[3][5]的存储地址是( ) A. 1000 B. 860 C. 1140 D.1200 5.关键路径是事件结点网络中( ) A.最短的回路 B.最长的回路 C.从开始结点到完成结点的最短路径 D.从开始结点到完成结点的最长路径 6.判断一个循环队列Q(最多元素为m)为满队列的条件是( ) A.Q->front==Q->rear B. Q->front!=Q->rear C. Q->front== (Q->rear+1)%m D. Q->front!=(Q->rear+1)%m 7. 栈和队列的共同特点是( )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 8. 广义表((a),a)的表尾是( )。 A.a B.((a),a) C.(a) D.((a)) 9.下面程序段的时间复杂度为( ) for (int i=0;ilink; delete s; B.rear=rear-

浙江理工大学数据结构与算法期末样卷 (3)

模拟试卷三 一、单选题(每题2 分,共20分) 1.对一个算法的评价,不包括如下()方面的内容 A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( ) A.p->next=HL->next; HL->next=p; B.p->next=HL; HL=p; C.p->next=HL; p=HL; D.HL=p; p->next=HL; 3.对线性表,在下列哪种情况下应当采用链表表示?( ) A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( ) A.2 3 1 B.3 2 1 C.3 1 2 D.1 2 3 5.AOV网是一种() A.有向图 B.无向图 C.无向无环图 D.有向无环图 6.采用开放定址法处理散列表的冲突时,其平均查找长度() A.低于链接法处理冲突 B.高于链接法处理冲突 C.与链接法处理冲突相同 D.高于二分查找 7.若需要利用形参直接访问实参时,应将形参变量说明为()参数 A.值 B.函数 C.指针 D.引用 8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。 A.行号 B.列号 C.元素值 D.非零元素个数 9.快速排序在最坏情况下的时间复杂度为() A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2) 10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( ) A.O(n) B.O(1) C.O(log2n) D.O(n2) 二、运算题(每题6 分,共24分) 1.数据结构是指数据及其相互之间的______________。当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。

JAVA课程设计题目

Java课程设计题目 一、课程设计的目的 为了进一步巩固java程序设计课程所学到的知识,深刻把握Java语言的重 要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。 通过此次课程设计,巩固所学java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通 过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程 思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 二、课程设计的基本要求 1、明确题目要求,进行需求分析; 2、进行功能设计,编写设计说明; 3、进行程序设计与调试; 4、对设计过程进行系统的总结; 5、界面美观大方; 6、完成设计报告 7、课程设计建议在Editplus +JDK、JCreator +JDK、myeclipse平台上开发、调试。 8、 Java源程序应加上详尽的注释语句,对所设计的类、属性、方法说明其用途,对方法的调用说明其用意和使用参数的原因。特别是有深刻理解、有独 特见解的地方,用注释语句加以说明。 三、课程设计的主要内容 利用学到的编程知识和编程技巧,通过具体项目的分析、设计和开发,掌握开发Java大型软件项目过程中所需要的软件技术并熟悉软件。 可以以小组为单位,每组1至2名学生,在教师的指导下,每组完成一个题目。题目可由下面提供的选题中选择或学生自选经教师审核后方可。该组每个同学承担题目的不同部分,每位同学的课程设计报告必需独立完成。 题目类型大致分配如下: 1、网络通讯类,编制网络聊天(Chat)程序,以下简称“网络”类。

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

JAVA课程设计大纲

淮海工学院 课程设计教学大纲 课程名称:面向对象课程设计 开课系部:软件工程 撰写人:纪兆辉 审核人: 修(制)订日期:2008年3月 系(院)主管领导签章: 淮海工学院教务处

面向对象课程设计大纲 课程类别:必修学时:40 课程性质:集中实践教学学分:2 适用专业:软件工程、网络工程开课系部:软件工程 一、基本目的与任务 面向对象课程设计是软件工程、网络工程专业实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。其目的在于加深对面向对象理论和基本知识的理解,掌握使用Java语言进行面向对象程序设计的基本方法,提高运用面向对象知识解决实际问题的能力。基本任务是使得学生通过课程设计掌握利用java进行底层的网络应用程序设计、多媒体应用设计、JDBC编程的基本方法,学会综合利用awt包和Swing组件包进行图形用户界面的设计,同时,对java的事件委托模型、异常处理机制、包和接口的概念及多线程技术有比较熟练的把握。 二、教学基本内容 正确运用常用的包、工具类和算法,熟练进行对象类的定义和使用,综合运用图形界面元素构造应用程序界面,熟悉Applet的工作原理,熟练编写Java应用程序和Applet小程序。对网络编程、多媒体编程、JDBC技术能有较全面准确的把握并会综合运用解决实际问题。 在课程设计中,为了提高开发效率,建议尝试选用开发工具Eclipse、NetBeans、Jbuilder。设计的选题要围绕Java的面向对象特点,把如下一些知识点的运用组织到课程设计的选题当中: 包、接口、抽象类 常用工具与算法--数组、向量、字符串、链表等 Java的多线程技术与动画制作 Java的网络编程 Java的数据库连接技术---JDBC Java的异常处理机制 面向对象技术中的继承、重载、各种修饰符

(NEW)浙江理工大学信息学院991数据结构历年考研真题汇编

目 录 2014年浙江理工大学信息学院991数据结构考研真题2013年浙江理工大学信息学院991数据结构考研真题2012年浙江理工大学信息学院991数据结构考研真题2011年浙江理工大学信息学院991数据结构考研真题2008年浙江理工大学信息学院935数据结构考研真题2007年浙江理工大学信息学院435数据结构考研真题

2014年浙江理工大学信息学院991数据结构 考研真题 浙江理工大学 2014年硕士学位研究生招生入学考试试题 考试科目:数据结构 代码:991 (请考生在答题纸上答题,在此试题纸上答题无效) 一、单选题:(每小题2分,共30分) 1.不带头结点的单链表simple List为空的判定条件是______。 A.simple List == null B.simple List->next == null C.simple List->next = simple List D.simple List!= null 2.某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故采用______存储方式最节省运算时间。 A.单链表 B.仅有头结点的单循环链表 C.双链表

D.仅有尾指针的单循环链表 3.向一个栈顶指针为top的链栈中插入一个S所指结点时,则执行______。 A.top->next = S; B.S->next = top->next top->next = S; C.S->next = top; top = S D.S->next = top; top = top->next; 4.一维数组和线性表的区别是______。 A.前者长度固定,后者长度可变 B.后者长度固定,前者长度可变 C.两者长度均固定 D.两者长度均可变 5.设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分按行序存放在一维数组B[1, n(n-1)/2]中,对任一下三角部分中任一元素a ij(),在一组数组B的下标位置K的值是______。 A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1

数据结构课程设计

《数据结构》 课程设计报告 学号 姓名 班级 指导教师 安徽工业大学计算机学院 2010年6月

建立二叉树和线索二叉树 1.问题描述: 分别用以下方法建立二叉树并用图形显示出来: 1)用先序遍历的输入序列 2)用层次遍历的输入序列 3)用先序和中序遍历的结果 2.设计思路: 分三个方式去实现这个程序的功能,第一个实现先序遍历的输入数列建立二叉树;第二个是用层次遍历的方法输入序列;第三个是用先序和后序遍历的结果来建立二叉树;三种方法建立二叉树后都进行输出。关键是将这三个实现功能的函数写出来就行了;最后对所建立的二叉树进行中序线索化,并对此线索树进行中序遍历(不使用栈)。 3.数据结构设计: 该程序的主要目的就是建立二叉树和线索二叉树,所以采用树的存储方式更能完成这个程序; 结点的结构如下: typedef struct bnode { DataType data; int ltag,rtag; struct bnode *lchild, *rchild; } Bnode, *BTree; 4.功能函数设计: BTree CreateBinTree() 用先序遍历的方法讲二叉树建立; BTree CREATREE() 用队列实现层次二叉树的创建; void CreatBT(); 用先序和中序遍历的结果建立二叉树; void InThread(BTree t,BTree pre) 中序线索化; 5.编码实现: #include #include #define max 100 typedef struct bnode { char data; int ltag,rtag; struct bnode *lchild,*rchild; }Bnode,*BTree; BTree Q[max]; BTree CREATREE() { char ch; int front=1,rear=0;

数据结构课程设计任务书

数据结构课程设计任务书 一、课程设计目的 本课程设计的目的考察学生对常见数据结构及相关算法的综合应用能力,达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,解决实际问题中数据的合理存储表示,并根据相应的存储结构设计效率较高的算法实现对问题的求解;通过此次课程设计进一步培养学生良好的程序设计技巧和分析问题解决问题的能力。 二、课程设计题目 课程设计题一:同学录 设计目的: 1.掌握线性表的数据存储。 2.掌握线性表的基本操作。 3.掌握查找的基本算法。 具体功能: 1.对同学基本信息进行录入,应能分类录入不同阶段的同学信息,同学信息包括同学姓名、身份证号、联系电话、qq号码、爱好、联系地址、邮箱等信息; 2.对同学信息进行查询,可按同学姓名、地址、年龄段等多种方式进行查询; 3.对同学信息进行排序,可按同学姓名、年龄、地址、qq号等多种方式查询;; 4.对同学信息进行修改; 5.对同学信息进行删除; 6.可以对同学的信息进行不同方式的展示。 设计要求: 1.要求用文件实现对信息的保存; 2.选用链表和顺序表均可; 3.要求用面向对象程序设计思想实现。 课程设计题二:算术题测试程序 设计目的: 1.掌握栈的存储结构。 2.掌握栈基本操作的实现。 3.能引用栈解决相关的实际问题。 具体功能: 1.能随机出题,题数由用户输入确定,算术题包括加减乘除四则运算,表达式项数应不限,可以包含括号; 2.需要进行表达式的合法性验证; 3.用户交互输入答案; 4.计算机核对用户答案; 5.能对用户的测试评分; 6.实现多用户系统,并对用户的用户名和得分保存到文件,此功能选作。 设计要求:

数据结构课程设计

一、高校社团管理 在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。为了有效管理这些社团,要求编写程序实现以下功能:1.社团招收新成员; 2.修改社团相应信息 3.老成员离开社团 4.查询社团情况; 5.统计社团成员数; 二、简单文本编辑器 设计一个文本编辑器,允许将文件读到内存中,也就是存储在一个缓冲区中。这个缓冲区将作为一个类的内嵌对象实现。缓冲区中的每行文本是一个字符串,将每行存储在一个双向链表的结点中,要求设计在缓冲区中的行上执行操作和在单个行中的字符上执行字符串操作的编辑命令。 基本要求: 包含如下命令列。可用大写或小写字母输入。 R:读取文本文件到缓冲区中,缓冲区中以前的任何内容将丢失,当前行是文件的第一行; W:将缓冲区的内容写入文本文件,当前行或缓冲区均不改变。 I:插入单个新行,用户必须在恰当的提示符的响应中键入新行并提供其行号。 D:删除当前行并移到下一行; F:可以从第1行开始或从当前行开始,查找包含有用户请求的目标串的第一行; C:将用户请求的字符串修改成用户请求的替换文本,可选择是仅在当前行中有效的还是对全文有效的。 Q:退出编辑器,立即结束; H:显示解释所有命令的帮助消息,程序也接受?作为H的替代者。 N:当前行移到下一行,也就是移到缓冲区的下一行; P:当前行移到上一行,也就是移到缓冲区的上一行;

B:当前行移到开始处,也就是移到缓冲区的第一行; E:当前行移到结束处,也就是移到缓冲区的最后一行; G:当前行移到缓冲区中用户指定的行; V:查看缓冲区的全部内容,打印到终端上。 三、电话客户服务模拟 一个模拟时钟提供接听电话服务的时间(以分钟计),然后这个时钟将循环的 自增1(分钟)直到达到指定时间为止。在时钟的每个"时刻",就会执行一次检查来看看对当前电话服务是否已经完成了,如果是,这个电话从电话队列中删除,模 拟服务将从队列中取出下一个电话(如果有的话)继续开始。同时还需要执行一个检查来判断是否有一个新的电话到达。如果是,其到达时间被记录下来,并为其产生一个随机服务时间,这个服务时间也被记录下来,然后这个电话被放入电话队列中,当客户人员空闲时,按照先来先服务的方式处理这个队列。当时钟到达指定时间时,不会再接听新电话,但是服务将继续,直到队列中所偶电话都得到处理为止。 基本要求: (1)程序需要的初始数据包括:客户服务人员的人数,时间限制,电话的到达速率,平均服务时间 (2)程序产生的结果包括:处理的电话数,每个电话的平均等待时间 四、停车场管理 设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的交费(从进入便道开始计时)。在这里假设汽车从便道上开走时不收取任何费用 基本要求: (1)汽车的输入信息格式为(到达/离去的标识,汽车牌照号码,到达/离去的时间)

《计算机网络课程设计》任务书

《计算机网络课程设计》任务书 一、目的和任务 计算机网络使用课程设计是学习《计算机网络》课程后的一个重要实践环节,是对学生进行的一次较为全面的网络使用程序设计训练。其基本目的是:(1)培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络使用中问题的能力,从而使基础理论知识得到巩固和加深。 (2)运用软件工程的原理、方法和工具完整地设计并开发一个软件项目。 (3)学习掌握网络使用系统的一般设计过程和方法。 (4)熟悉并掌握B/S模式构建网络使用。 二、教学基本要求 (1)合理设计系统框图和网站结构图。 (2)根据系统框图设计,编写网页及程序代码。 (3)程序设计时,要求使用https://www.360docs.net/doc/6a1083250.html,或者JSP语言进行开发,完成课设题目的全部内容。 (4)完成课程设计报告。 在“计算机网络使用课程设计”的实验过程中,要求学生做到: (1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。 (2)仔细观察上机和上网操作时出现的各种现象,记录主要情况,作出必要说明和分析。

(3)认真书写实验报告。实验报告包括实验目的和要求,实验情况及其分析。对需编程的实验,写出程序设计说明,给出源程序框图和清单。 (4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。 (5)实验课程不迟到早退。如有事不能出席,所缺实验自行补齐。 三、课程设计内容 (1)建立配置WEB服务器; (2)编写静态网页; (3)设计数据库系统; (4)编写动态网页部分; (5)系统集成调试; (6)编写系统文档; (7)答辩。 四、时间安排 本课程设计安排40个学时的上机时间,上机地点:4-501、503教机房。 每次上机具体任务安排(共10次): (1)系统设计(系统功能结构图)(1次) (2)建立、配置WEB服务器,编写静态网页(5次) (3)数据库设计、编写动态网页 (2次) (4)编写系统文档及实验报告 (1次) (5)程序验收、答辩 (1次) 五、组织管理

数据结构课程设计报告

数据结构课程设计报告 题目:5 班级:计算机1102 学号:4111110030 姓名:陈越 指导老师:王新胜

一:需求分析 1.运行环境 TC 2.程序所需实现的功能 几种排序算法的演示,要求给出从初始开始时的每一趟的变化情况,并对各种排序算法性能作分析和比较: (1)直接插入排序; (2)折半插入排序; (3)冒泡排序; (4)简单选择排序; (5)快速排序; (6)堆排序; (7)归并排序. 二:设计说明 1.算法设计的思想 1)、直接插入排序 排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序。 2)、折半插入排序 排序过程:用折半查找方法确定插入位置的排序叫折半插入排序。 3)、冒泡排序

排序过程:将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r[1].key>r[2].key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止——第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上。对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置。重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止 4)、简单选择排序 排序过程:首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换。再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换。重复上述操作,共进行n-1趟排序后,排序结束。 5)、快速排序 基本思想:通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序。 排序过程:对r[s……t]中记录进行一趟快速排序,附设两个指针i和j,设枢轴记录rp=r[s],x=rp.key。初始时令i=s,j=t。首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp交换。再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换。重复上述两步,直至i==j为止。再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止。 6)、堆排序 排序过程:将无序序列建成一个堆,得到关键字最小(或最大)的记录;输

2018年浙江理工大学991数据结构考研真题试题试卷

目录 2018 年浙江理工大学991数据结构考研真题试题试卷 (2) 第 1 页,共 6 页

第 1 页 ,共 5 页 浙 江 理 工 大 学 2018年硕士研究生招生考试初试试题 考试科目:数据结构 代码:991 (请考生在答题纸上答题,在此试题纸上答题无效) 一、单选题:(每小题2分,共30分) 1. 带头结点的单链表simpleList 为空的判定条件是 。 A. simpleList == null B. simpleList->next == null C. simpleList->next = simpleList D. simpleList! = null 2. 某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故采用_______________存储方式最节省运算时间。 A. 单链表 B. 仅有头结点的单循环链表 C. 双链表 D. 仅有尾指针的单循环链表 3. 向一个栈顶指针为top 的链栈中删除一个结点时,用X 保存被删结点的值,则执行_______________________。 A.X = top; top = top->next; B. X = top->data; C. top = top->next; X = top->data; D. X = top->data; top = top->next; 4. 一维数组和线性表的区别是_____________。 A. 前者长度固定,后者长度可变 B. 后者长度固定,前者长度可变 C. 两者长度均固定 D. 两者长度均可变 5. 稀疏矩阵一般的压缩存储方法有两种,即______________________。 A. 二维数组和三维数组 B. 三元组和散列 C. 三元组和十字链表 D. 散列和十字链表 6. 不带头结点的单链表simpleList 为空的判定条件是 。 A. simpleList == null B. simpleList->next == null C. simpleList->next = simpleList D. simpleList! = null 7. 某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故采用_______________存储方式最节省运算时间。 A. 单链表 B. 仅有头结点的单循环链表 C. 双链表 D. 仅有尾指针的单循环链表 8. 向一个栈顶指针为top 的链栈中插入一个S 所指结点时,则执行_______________________。 A. top->next = S; B. S->next = top->next; top->next = S; C. S->next = top; top = S; D. S->next = top; top = top->next; 9. 采用邻接表存储的图的深度优先遍历算法类似于二叉树的____________________。 A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 按层遍历 10. 设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分按行序存放在一维数组B[1, n(n-1)/2]中,对任一下三角部分中任一元素a ij (i j ),在一组数组B 的下标位置K 的值是______。 A. i(i-1)/2+j-1 B. i(i-1)/2+j C. i(i+1)/2+j-1 D. i(i+1)/2+j 11. 如右图所示的一棵二叉排序树其不成功的平均查找长度为 __________________。 A. 21/7 B. 28/7 C. 15/6 D. 21/6 第 2 页,共 6 页

数据结构课程设计报告(完结)

《数据结构》课程设计手册 一、 栈的使用 (一)需求分析 本程序通过java 语言完成栈的构造,对堆栈的数据进行基本的存储操作。具体包括,数据的入栈、出栈、读取等。 入栈操作:要求用户从键盘出入要进栈的数值或字符,对栈满的情况作出提示。 出栈操作:删除栈顶元素,并将删除的数据或字符在运行结果中显示。对栈空的情况作出提示。 读取操作:在插入和删除的任意阶段都可讲栈中的元素读取出来,能够实现对栈中的数据元素个数进行统计。 (二)概要设计 1.为了实现上述程序功能,需要定义栈的数据类型有: static int MAX=5; static String[] item =new String[MAX]; static int top; 2.本程序包含4个函数 Push() 初始条件:栈未满 操作结果:往栈中插入数据; Pop() 初始条件:存在非空栈 操作结果:将栈中的数据删除; Get() 初始条件:存在非空栈 操作结果:显示非空栈中的所有元素; Main() 操作结果:调用以上函数。 程序流程图: Main() Pop() Push() Get()

(三)详细设计 具体代码见Stack.java 基本操作: Stack()构造一个空的栈,初始状态top的指针为-1; 入栈方法public static void push()。该方法中,首先判断是否栈满(top>=MAX-1),如果栈满,则输出提示语“栈满 ,栈中最多能容纳5个元素”,否则从键盘输入数据,并且top指针加1。 出栈方法public static void pop()。首先判断是否栈空(top<0),如果栈空,则输出提示信息“栈空 ,没有可操作的元素”,否则删除栈顶元素。Top指针减1。

校友录管理系统概要设计

校友录管理系统概要设计 姓名:龙云所 学院:传媒与信息工程 专业:12软件 学号:20121112118 指导教师:刘春华 目录: 一、、、、、、、、、、、、、、、、、、、、、、、、、、、校友录的基本功能 二、、、、、、、、、、、、、、、、、、、、、、、、、、、、数据库系统 三、、、、、、、、、、、、、、、、、、、、、、、、、、、、总体设计 四、、、、、、、、、、、、、、、、、、、、、、、、、、、个模块的设计与功能实现 五、、、、、、、、、、、、、、、、、、、、、、、、、、、、系统流程图 一校友录的基本功能: 本同学录总体上能满足班级成员保持联系,总共设计了多个窗口页面,基本功能有:

1、创建班级:第一个登陆的用户具有此权限。 2、新用户注册:加入本班。 3、班级主页具有的主要功能班级成员:显示成员的详细资料;班级留言:发表留言及建议,同时还可以通过真实姓名搜索留言;班级相册:可上传、删除照片;班级读物:可发表、修改、删除文章;班级名片:提供班级成员最简单的联络方法;修改资料:可以修改成员的详细资料、密码信息;管理员入口:只有超级管理员和经授权的管理员进入。 4、统计班级在线人数,显示在线班级成员。 5、同学录首页显示最新用户列表,统计班级人数。 6、通过回答密码提示问题取回密码。 二数据库系统 数据库是数据管理的最新技术,是计算机中的重要分支。今天,信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的重要条件。越来越多新的应用领域采用数据库技术来存储和处理信息资源。数据库系统是位于用户与操作之间的一层数据管理软件。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。 它的主要包括以下几个方面: 1数据定义 2数据组织、存储和管理

数据结构课程设计(附代码)

上海应用技术学院课程设计报告 课程名称《数据结构课程设计》 设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级 姓名学号指导教师日期 一.目的与要求 1. 巩固和加深对常见数据结构的理解和掌握 2. 掌握基于数据结构进行算法设计的基本方法 3. 掌握用高级语言实现算法的基本技能 4. 掌握书写程序设计说明文档的能力 5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力 二.课程设计内容说明 1. 项目一 (1) 对设计任务内容的概述 学生成绩管理** 任务:要求实现对学生资料的录入、浏览、插入和删除等功能。 输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩,设学生成绩至少3门以上。存储结构:采用线性链式结构。 (2) 详细设计 LinkList *create():输入学生成绩记录函数; void print(LinkList *head):显示全部记录函数 LinkList *Delete(LinkList *head):删除记录函数 LinkList *Insert(LinkList *head):插入记录函数 void menu_select():菜单选择 void ScoreManage():函数界面 (3) 程序流程图

(4) 程序模块及其接口描述 该程序可以分为以下几个模块: 1、菜单选择:void menu_select(); 提供五种可以选择的操作,在main函数中通过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。 2、输入功能:LinkList *create(); 通过一个for循环语句的控制,可以一次完成无数条记录的输入。并将其存入链

相关文档
最新文档