当前位置:文档之家› c++控制结构3

c++控制结构3

c++控制结构3
c++控制结构3

一读程序,写出每个程序的结果和含义1 输出1~100之间的不能被7整除的数。

for (int i=1; i<=100; i++)

{

if (i%7==0)

continue;

cout << i << endl;

}

2

#include

using namespace std;

int main()

{

int i,s;

for(i=1,s=0;i<=10;i++)

{

if(i % 2 == 0)

continue;

if(i % 10 == 7)

break;

s = s + i;

}

cout << "s="<

3

#include

int main()

{int s=7;

while(s==0)

s-=2;

cout<<"s="<

}

4

#include

int main()

{int s=7;

do

s-=2;

while(s==0);

cout<<"s="<

}

5

#include

int main()

{

for(int m=20;m>0;m--)

{if(m % 6==0) continue;

cout<

}

6

#include

int main()

{

for(int m=20;m>0;m--)

{if(m % 6==0) break;

cout<

}

}

二编程题

1 .判断一个数是素数

2 编程求1!+2!+3!+ (15)

3.编程求水仙花数,水仙花数是一个三位数,其各位数字立方和等于该数本身,如153=13+53+33

4编程求1000之内的所有“完数”,所谓一个完数是指一个数恰好等于它的因子之和。

5猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不

过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,发现只剩一个桃子了,求猴子第一天究竟摘了多少个桃子?

6编程打印图形(共10行)

#

###

#####

#######

#########

……

###################

数据结构课程实验指导书

数据结构实验指导书 一、实验目的 《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: 1)理论艰深,方法灵活,给学习带来困难; 2)内容丰富,涉及的知识较多,学习有一定的难度; 3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度; 根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。 课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: (1)加深对课堂讲授内容的理解 实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变" 活" ,起到深化理解和灵活掌握教学内容的目的。 不少学生在解答习题尤其是算法设计时,觉得无从下手。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出

现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 (2) 培养学生软件设计的综合能力 平时的练习较偏重于如何编写功能单一的" 小" 算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。 通过实验使学生不仅能够深化理解教学内容,进一步提高灵活运用数据结构、算法和程序设计技术的能力,而且可以在需求分析、总体结构设计、算法设计、程序设计、上机操作及程序调试等基本技能方面受到综合训练。实验着眼于原理与应用的结合点,使学生学会如何把书本上和课堂上学到的知识用于解决实际问题,从而培养计算机软件工作所需要的动手能力。 (3) 熟悉程序开发环境,学习上机调试程序一个程序从编辑,编译,连接到运行,都要在一定的外部操作环境下才能进行。所谓" 环境" 就是所用的计算机系统硬件,软件条件,只有学会使用这些环境,才能进行 程序开发工作。通过上机实验,熟练地掌握程序的开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,尽快掌握程序调试方法是非常重要的。分析问题,选择算法,编好程序,只能说完成一半工作,另一半工作就是调试程序,运行程序并得到正确结果。 二、实验要求 常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题目的远不如从实际问题中的复杂程度度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目: 1) 问题分析和任务定义 在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的

(完整word版)数据结构课程设计实验报告

设计题目:一 单位员工通讯录管理系统 一、题目要求 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。二、概要设计 本程序通过建立通讯录链表,对员工信息进行记录,并建立一个系统的联系。 三、主要代码及分析 这里面关于链表的主要的操作有插入,查询,删除。则这里只列出这几项的主代码。 1、通过建立通讯录结构体,对信息进行存储,建立链表,建立信息之间 的联系。 typedef struct { }DataType;结构体来存储通讯录中的基本信息 typedef struct node { DataType data; /*结点的数据域*/ struct node *next; /*结点的指针域*/ }ListNode,*LinkList; 2、信息插入操作,将信息查到链表的后面。 void ListInsert(LinkList list){ //信息插入 ListNode *w; w=list->next; while(w->next!=NULL) { w=w->next; } ListNode *u=new ListNode; u->next=NULL; cout<<"员工编号:";cin>>u->data.num; cout<<"员工姓名:";cin>>u->https://www.doczj.com/doc/2d145932.html,; cout<<"手机号码:";cin>>u->data.call; cout<<"员工邮箱:";cin>>u->data.email; cout<<"办公室电话号码:";cin>>u->data.phone; w->next=u;w=w->next; }

数据结构课程设计实验指导书

《数据结构课程设计》实验指导书 1.1 实验报告撰写的基本要求 1.1.1 问题描述 这一部分需要简单介绍题目内容,即该实验到底要做什么。 1.1.2 算法说明 这一部分需要详细描述解决问题需要用到算法和重要的数据结构,即该实验到底应该怎么做。 基本要求:处理问题中所用到的关键算法都要描述清楚,而不是仅描述主函数。算法和数据结构可用伪码和图示描述,不要只写源代码和注释。 1.1.3 测试结果 这一部分内容需要紧扣实习的题目类型和要求,涉及提供相应的测试方法和结果。 对于需要利用某算法解决某问题的题目,应设计并填写一张测试用例表。每个测试用例一般包括下列内容: (1)测试输入:设计一组输入数据; (2)测试目的:设计该输入的目的在于测试程序在哪方面可能存在漏洞; (3)正确输出:对应该输入,若程序正确,应该输出的内容; (4)实际输出:该数据输入后,实际测试得到的输出内容; (5)错误原因:如果实际输出与正确输出不符,需分析产生错误的可能原因; (6)当前状态:分为“通过”(实际输出与正确相符)、“已改正”(实际输出与正确输出不符,但现在已修改正确)、“待修改”(实际输出与正确输出不符,且尚未改正)三种状态; (7)测试结果分析:需要详细解释测试策略,对得到的数据进行分析,总结出算法的时空复杂度,得出自己对算法性能等方面分析的结论。 附录:源代码 源代码列在附录中,要求程序风格清晰易理解,有充分的注释,有意义的注释行少于代码的30%将不能得分。

1.2 实习作业的提交要求 每个实习项目结束后,学生按照实验报告格式和内容要求提交实验报告(打印稿)1份,与此同时提交压缩后的电子资料1份,电子资料要求按照如下方式打包: 文档夹:包括电子版的实验报告 学号姓名.rar 源代码文件 代码夹:源代码文件对应的可执行文件 readme.txt文件,告知如何编译源代码,生 成可执行文件

数据结构课程设计实验报告

《空间数据结构基础》 课程实习报告(测绘10级) 姓名 班级 学号 环境与测绘学院

1C++面向对象程序设计基础 【实验简介】学会用算法语言C++描述抽象数据类型,使用模板建立数据结构。理解数据结构的组成分为两部分,第一部分是数据集(数据元素),第二部分是在此数据集上的操作。从面向对象的观点看,这两部分代表了对象的属性和方法。掌握用C++描述数据结构的基本方法,即通过建立类来描述抽象数据类型。类的数据成员提供对象属性,成员函数提供操作方法,方法是公共接口,用户通过调用方法实现对属性的访问。 【实验内容】 1.定义三维空间的坐标点TPoint 2.描述三维空间的球TBall,实现其主要操作(如计算体积和表面积,输出空间坐标 等)。 【主要代码】 头文件: TPoint.h: #ifndef TPOINT_H #define TPOINT_H #include using namespace std; class TPoint { public: TPoint(double xx,double yy,double zz):x(xx),y(yy),z(zz){} TPoint(TPoint &TP):x(TP.x),y(TP.y),z(TP.z){} double getX()const{return x;}//取x坐标值 double getY()const{return y;}//取y坐标值 double getZ()const{return z;}//取z坐标值 void DisplayTP() const {cout<<"("<

数据结构与算法设计实验

《数据结构与算法设计》 实验报告 ——实验二 学院:自动化学院 班级: 学号: : 一、实验目的

按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。 二、实验容 简单计算器。 请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。要求: ①从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志。 ②输入表达式中的数值均为大于等于零的整数。中间的计算过程如果出现小数也只取 整。 例如,输入:4+2*5= 输出:14 输入:(4+2)*(2-10)= 输出:-48 三、程序设计 概要设计 1、宏定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 2、基本函数: (1)void InitStack_char(SqStack *S) //char型栈初始化 (2)void InitStack_int(sqStack *S) //int型栈初始化 (3)void Push_char(SqStack *S,char ch) //char型元素进栈 (4)void Push_int(sqStack *S,int num) //int型元素进栈 (5)char GetTop_char(SqStack *S) //取char型栈顶元素 (6)int GetTop_int(sqStack *S) //取int型栈顶元素 (7)Status In(char c) //判断是否为运算符,若是运算符则返回,否则返回 (8)char Precede(char a,char b) //判断两运算符的先后次序 (9)Status Pop_char(SqStack *S,char &x) //char型栈出栈 (10)Status Pop_int(sqStack *S,int &x) //int型栈出栈 (11)int Operate(int a,char theta,int b) //计算a和b运算结果 3、流程图

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

数据结构课程设计实验报告

数据结构课程设计实验报告

设计题目:一 单位员工通讯录管理系统 一、题目要求 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。 二、概要设计 本程序通过建立通讯录链表,对员工信息进行记录,并建立一个系统的联系。 三、主要代码及分析 这里面关于链表的主要的操作有插入,查询,删除。则这里只列出这几项的主代码。 1、通过建立通讯录结构体,对信息进行存储,建立链表,建立信息之间 的联系。 typedef struct { }DataType;结构体来存储通讯录中的基本信息 typedef struct node { DataType data; /*结点的数据域*/ struct node *next; /*结点的指针域*/ }ListNode,*LinkList; 2、信息插入操作,将信息查到链表的后面。 void ListInsert(LinkList list){ //信息插入 ListNode *w; w=list->next; while(w->next!=NULL) { w=w->next; } ListNode *u=new ListNode; u->next=NULL; cout<<"员工编号:";cin>>u->data.num; cout<<"员工姓名:";cin>>u->https://www.doczj.com/doc/2d145932.html,; cout<<"手机号码:";cin>>u->data.call; cout<<"员工邮箱:";cin>>u->data.email; cout<<"办公室电话号码:";cin>>u->data.phone; w->next=u;w=w->next; }

数据结构实验报告(2012级)

《数据结构》实验报告 专业_____________ 年级_____________ 学号_____________ 学生姓名_____________ 指导老师_____________ 华中师范大学信息管理系编

I 实验要求 1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。 2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。 3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。 4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。 II 实验内容 实验一线性表 【实验目的】 1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。 【实验内容】 1.一个线性表有n个元素(n

《数据结构》实验讲义

《数据结构》实验讲义 课程简介

实验(选做,设计性实验,2学时) 实验题目:学生成绩管理系统 ●学生记录结构如下: struct student_type{ char id[5];/*学生学号*/ char name[11];/*学生名字*/ int age;/*学生年龄*/ int math;/*数学成绩*/ int eng;/*英语成绩*/ int ds;/*数据结构成绩*/ int os;/*操作系统成绩*/ } ●10个学生信息如下: 1001 zengliang 19 86 87 84 80 1002 yaochang 18 75 85 79 68 1003 chuhua 20 85 98 76 89 1004 liuchang 21 69 85 75 88 1005 zhaoxia 19 89 85 75 84 1006 lina 20 89 84 95 75 1007 chenzhen 19 90 85 87 85 1008 wangkai 20 82 86 50 69

1009 xiaoyu 19 84 74 70 80 1010 weikun 20 68 84 79 86 实验目的: 1、熟悉C语言的书写规范,注意输入、输出的方式及错误处理 方式。 2、理解算法五个要素的确切含义,掌握计算语句频度和估算算法 时间复杂度的方法。 3、熟悉C语言函数的定义、函数的调用,参数的传递等细节 4、熟悉C语言读写文件的函数及其使用。 实验要求: ●将这10个学生信息存入到磁盘文件stu_list.in中。 ●将磁盘文件中的所有学生记录读入内存中一块静态顺序空间 中(使用数组申请),求出所有学生数学的平均成绩。 ●将磁盘文件中的所有学生记录读入内存中一块动态申请的顺 序空间中(使用函数malloc()申请),求出所有学生数学的平均 成绩。 实验内容和实验步骤:(由学生填写) 实验用测试数据和相关结果分析:(由学生填写) 实验总结:(由学生填写)

数据结构课程设计实验报告

数据结构课程设计报告 一、设计题目:单词(词组)检索 现在有一个英文字典(每个单词都是由小写的'a'-'z'组成)单词量很大,达到100多万的单词,而且还有很多重复的单词。此外,我们现在还有一些Document,每个Document 包含一些英语单词。针对这个问题,请你选择合适的数据结构,组织这些数据,使时间复杂度和空间复杂度尽可能低,并且解决下面的问题和分析自己算法的时间复杂度。 1)基本型问题 (1)选择合适的数据结构,将所有的英文单词生成一个字典Dictionary。 (2)给定一个单词,判断这个单词是否在字典Dictionary中。如果在单词库中,输出这个单词总共出现的次数。否则输出NO。 2)扩展型问题 (3)给定一个单词,按字典序输出字典Dictionary 中所有以这个单词为前缀的单词。例如,如果字典T={a,aa, aaa, b, ba}, 如果你输入a,那么输出应该为{a, aa, aaa}。

(4)给定一个单词,输出在Dictionary 中以这个单词为前缀的单词的出现频率最高的10个单词,对于具有相同出现次数的情况,按照最近(即最后)插入的单词优先级比较高的原则输出。 (5)输出Dictionary中出现次数最高的10个单词。 3)高级型问题 (6)现在我们有一些Document,每个Document 由一些单词组成,现在的问题就是给你一个word,检索出哪些Document包含这个word,输出这些Document的DocumentID(就如同搜索引擎一样,即输入一些关键字,然后检索出和这些关键字相关的文档)。 (7)在第(6)问中,我们只考虑了一个word 在哪些Document 中的情况,我们进一步考虑2个相邻word的情况,检索出同时包含这两个相邻word的DocumentID。 4)挑战型问题 (8)现在我们再对(7)的问题进行扩展,把(7)中的只检索相邻2个word 推广到可以检索多个word(即连续的k个word,其中k>=2),检索出同时包含k个连续word 的DocumentID。 二、设计思路: 对于(1)问,题目要求选择适当的数据结构将一百二十多万个英文单词生成一个字典。我采用经典字典树结构进行构造,每个节点包括频度,时间,和后继二十六个指针。其中频度为单词的频度,若该字母为单词的最后一个字母,则该字母的pin为该单词的频度,否则

大二下学期数据结构课程设计实验报告

景德镇陶瓷大学 数据结构课程设计报告题目: 3 7 14 16 院系名称:专业名称:信息工程学院信息与计算科学 班级:15信息一班 学生姓名:孟喜洋 学号:115060200101 指导教师:杨利华 设计起止时间:2017.6.5——2017.6.16

题目 3 一元多项式计算 1、实验目的 1)、能够按照指数降序排列建立并输出多项式; 2)、能够完成两个多项式的相加、相减,并将结果输入。 2、实验要求 在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使 用程序流程图) 、源程序、测试数据和结果、算法的时间复杂度、另外可以提 出算法的改进方法。 3.存储结构 Typedef struct PNode ; { float coef ; Int expn ; Struct PNode *next ; }Pnode ,*Polynomial ; 4.基本算法 1.概要设计 1. 功能:将要进行运算的多项式输入输出。 2. 数据流入:要输入的多项式的系数与指数。 3. 数据流出:合并同类项后的多项式。 4. 程序流程图:多项式输入流程图如图所示。 5. 测试要点:输入的多项式是否正确,若输入错误则重新输入 +++++++++++++++ +++++++++++++++ +++++++++++++++ ++++++++++ 否 是否输入正确 是 开始 申请结点空间 输入多项式的项数 输入多项式各项的系数 x, 指数 y 输出已输入的多项式 合并同类项 结束

2、多项式的加法 开始 是 存储多项式 1 的空链 P 是否为空 否 是 存储多项式 2 的空 链 Q 是否为空 否 中 中 结束 3、多项式的减法 定义存储结果的空链 r 同指数项系数相加后存入 r 直接把 p 中 各项存入 r 直接把 q 中 各项存入 r 输出存储多项式的和的链 r 合并同类项

数据结构实验与课程设计实验教学大纲

《数据结构实验与课程设计》实验教学大纲 课程名称:数据结构实验与课程设计 英文名称:Experiment and Course Project of Data Structure 课程编号:2215201101 ~ 107 课程性质:课程类型:专业基础课是否为独立设课的实验课:是 适用专业:计算机与软件学院 学时与学分:总学时:72 总学分:2 实验学时:72 实验学分:2 执笔人:蔡茂国 制定时间:2012年9月 一、实验课的任务、性质与目的 本实验课程与《数据结构》理论课堂教学有机结合,相辅相成。在理论课堂教学中,比较全面、概括性地讲述数据结构学科中一些基础性知识、重要概念及各种算法,而在本实验课程中,将这些基础性知识、重要概念及各种算法,在计算机上编程实现,使学生能够达到以下教学目标: ⑴、掌握计算机处理数据的基本方法 ⑵、了解算法需用的时间及空间分析方法 ⑶、能够为实际应用所涉及的数据选择适当的逻辑结构、存储结构及相应的算法 ⑷、通过在计算机上编程实现课程中介绍的各种算法,在程序设计能力方面得到提升。 二、主要仪器设备及环境 1.计算机 2.Windows软件环境 3.TurboC/VC编程环境 三、实验项目的设置与实验内容 序号实验项目 名称 实验内容实验算法 实验 要求 实验 时数 每组 人数 实验 类型 1 顺序表实 验 顺序表类定义 顺序表创建、插 入、删除、查找 等功能的实现 顺序表的测试运 行 (1)顺序表的存储结构包含三个部分:数据 数组、最大长度、实际长度 (2)顺序表的创建:分配空间、参数初始化 (3)顺序表的插入:位置i和后面的数据全 部后移一位,在指定位置i插入一个数据, 长度加1 (4)顺序表的删除:位置i后面的数据全部 前移一位,覆盖掉位置i的数据,长度减一 (5)顺序表的查找:给出位置i的数据 必做 4 1 验证 2 单链表实1、链表结点表类(1)链表结点的存储结构包含两部分:数据、必做 4 1 验证

数据结构实验

实验1: 顺序表的操作实验 一、实验名称和性质 二、实验目的 1.掌握线性表的顺序存储结构的表示和实现方法。 2.掌握顺序表基本操作的算法实现。 3.了解顺序表的应用。 三、实验内容 1.建立顺序表。 2.在顺序表上实现插入、删除和查找操作(验证性内容)。 3.删除有序顺序表中的重复元素(设计性内容)。 4.完成一个简单学生成绩管理系统的设计(应用性设计内容)。 四、实验的软硬件环境要求 硬件环境要求: PC机(单机) 使用的软件名称、版本号以及模块: Windows环境下的VC++ 五、知识准备 前期要求熟练掌握了C语言的编程规则、方法和顺序表的基本操作算法。 六、验证性实验 1.实验要求 编程实现如下功能: (1)根据输入顺序表的长度n和各个数据元素值建立一个顺序表,并输出顺序表中各元素值,观察输入的内容与输出的内容是否一致。 (2)在顺序表的第i个元素之前插入一个值为x的元素,并输出插入后的顺序表中各元素值。 (3)删除顺序表中第i个元素,并输出删除后的顺序表中各元素值。 (4)在顺序表中查找值为e的数据元素,如果查找成功,则显示“查找成功”和该元素在顺序表中的位置,否则显示“查找失败”。 2. 实验相关原理: 线性表的顺序存储结构称为顺序表,顺序表的存储结构描述为: #define MAXLEN 30 /*线性表的最大长度*/ typedef struct { Elemtype elem[MAXLEN]; /*顺序表中存放元素的数组,其中elemtype为抽象数据类型,在程

序具体实现时可以用任意类型代替*/ int length; /*顺序表的长度,即元素个数*/ }Sqlist; /*顺序表的类型*/ 【核心算法提示】 1.顺序表插入操作的基本步骤:要在顺序表中的第i个数据元素之前插入一个数据元素x,首先要判断插入位置i是否合法,假设线性表的表长为n,则i的合法值范围:1≤i ≤n+1,若是合法位置,就再判断顺序表是否满,如果满,则增加空间或结束操作,如果不满,则将第i个数据元素及其之后的所有数据元素都后移一个位置,此时第i个位置已经腾空,再将待插入的数据元素x插入到该位置上,最后将线性表的表长增加1。 2.顺序表删除操作的基本步骤:要删除顺序表中的第i个数据元素,首先仍然要判断i的合法性,i 的合法范围是1≤i≤n,若是合法位置,则将第i个数据元素之后的所有数据元素都前移一个位置,最后将线性表的表长减1。 3.顺序表查找操作的基本步骤:要在顺序表中查找一个给定值为e的数据元素,则可以采用顺序查找的方法,从顺序表中第1个数据元素开始依次将数据元素值与给定值e进行比较,若相等则查找成功,函数返回该数据元素在顺序表中的位置,若顺序表中所有元素都与给定值e不相片,则查找失败,函数返回0值。 【核心算法描述】 status Sqlist_insert(Sqlist &L,int i,Elemtype x) /*在顺序表L中第i个元素前插入新元素x*/ { if (i<1||i>+1) return ERROR; /*插入位置不正确则出错*/ if >=MAXLEN) return OVERFLOW; /*顺序表L中已放满元素,再做插入操作则溢出*/ for(j=;j>=i-1;j--) [j+1]=[j];/*将第i个元素及后续元素位置向后移一位*/ [i-1]=x; /*在第i个元素位置处插入新元素x*/ ++; /*顺序表L的长度加1*/ return OK; } status Sqlist_delete(Sqlist &L,int i,Elemtype &e) /*在顺序表L中删除第i个元素*/ { if (i<1||i> return ERROR; /*删除位置不正确则出错*/ for(j=i;j<=;j++) [j-1]=[j]; /*将第i+1个元素及后继元素位置向前移一位*/ ; /*顺序表L的长度减1*/ return OK; } int Sqlist_search(Sqlist L,Elemtype x) /* 在顺序表中查找值为x的元素,如果找到,则函数返回该元素在顺序表中的位置,否则返回0*/

《数据结构》实验报告

苏州科技学院 数据结构(C语言版) 实验报告 专业班级测绘1011 学号10201151 姓名XX 实习地点C1 机房 指导教师史守正

目录 封面 (1) 目录 (2) 实验一线性表 (3) 一、程序设计的基本思想,原理和算法描述 (3) 二、源程序及注释(打包上传) (3) 三、运行输出结果 (4) 四、调试和运行程序过程中产生的问题及采取的措施 (6) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (6) 实验二栈和队列 (7) 一、程序设计的基本思想,原理和算法描述 (8) 二、源程序及注释(打包上传) (8) 三、运行输出结果 (8) 四、调试和运行程序过程中产生的问题及采取的措施 (10) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (10) 实验三树和二叉树 (11) 一、程序设计的基本思想,原理和算法描述 (11) 二、源程序及注释(打包上传) (12) 三、运行输出结果 (12) 四、调试和运行程序过程中产生的问题及采取的措施 (12) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (12) 实验四图 (13) 一、程序设计的基本思想,原理和算法描述 (13) 二、源程序及注释(打包上传) (14) 三、运行输出结果 (14) 四、调试和运行程序过程中产生的问题及采取的措施 (15) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (16) 实验五查找 (17) 一、程序设计的基本思想,原理和算法描述 (17) 二、源程序及注释(打包上传) (18) 三、运行输出结果 (18) 四、调试和运行程序过程中产生的问题及采取的措施 (19) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (19) 实验六排序 (20) 一、程序设计的基本思想,原理和算法描述 (20) 二、源程序及注释(打包上传) (21) 三、运行输出结果 (21) 四、调试和运行程序过程中产生的问题及采取的措施 (24) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (24)

数据结构课程设计实验1-4(C语言)资料

实验一顺序表的操作 1、实验目的和要求: 1)了解顺序表的基本概念、顺序表结构的定义及在顺序表上的基本操作(插入、删除、查找以及线性表合并)。 2) 通过在visual C++实现以上操作的C语言代码。 3)提前了解实验相关的知识(尤其是C语言)。 2、实验内容: 1) 顺序表的插入算法,删除算法,顺序表的合并算法 2) 顺序表应用的实例(二选一) a) 利用顺序表的基本运行,实现如果在顺序表A中出现的元素,在顺序表B中也出现,则在顺序表A中将该元素删除。及实现A-B。 b) 顺序表A和B的元素都是非递减排列,将他们合并成一个顺序表C,要求C也是非递减排列。 3、部分参考实验代码: ⑴顺序表结构的定义: #include #define ListSize 100 typedef int DataType; typedef struct { DataType list[ListSize]; int length; }SeqList; ⑵顺序表插入(在第i号元素前插入一个新的元素) int InsertList(SeqList *L,int i,DataType e) /*在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0*/ { int j; if(i<1||i>L->length+1) /*在插入元素前,判断插入位置是否合法*/ { printf("插入位置i不合法!\n"); return -1;

} else if(L->length>=ListSize) /*在插入元素前,判断顺序表是否已经满,不能插入元素*/ { printf("顺序表已满,不能插入元素。\n"); return 0; } else { for(j=L->length;j>=i;j--)/*将第i个位置以后的元素依次后移*/ L->list[j]=L->list[j-1]; L->list[i-1]=e; /*插入元素到第i个位置*/ L->length=L->length+1; /*将顺序表长增1*/ return 1; } } ⑶顺序表删除 int DeleteList(SeqList *L,int i,DataType *e) { int j; if(L->length<=0) { printf("顺序表已空不能进行删除!\n"); return 0; } else if(i<1||i>L->length) { printf("删除位置不合适!\n"); return -1; } else { *e=L->list[i-1]; for(j=i;j<=L->length-1;j++) L->list[j-1]=L->list[j]; L->length=L->length-1; return 1; }

数据结构实验一

实验报告主要内容包括下面几个方面:(参考) 1、实验题目 2、设计思路 3、程序调试过程中遇到的问题及解决办法 4、附源程序 5、实验收获与体会 实验一线性表的建立、插入及删除 一、实验目的 1.掌握线性表的链式存储结构——单链表的定义及C语言实现。 2.掌握线性表在链式存储结构——单链表中的各种基本操作。 二、实验内容 链式线性表的建立、插入及删除。 三、实验步骤 建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。 四、实现提示 单链表的结点结构除数据域外,还含有一个指针域。用C语言描述结点结构如下: typedef int elemtype; typedef struct node { elemtype data; //数据域 struct node *next; //指针域 }linklist; 注意结点的建立方法及构造新结点时指针的变化。构造一个结点需用到C语言的标准函数malloc(),如给指针变量p分配一个结点的地址: p=(linklist *)malloc(sizeof(linklist));该语句的功能是申请分配一个类型为linklist

的结点的地址空间,并将首地址存入指针变量p 中。当结点不需要时可以用标准函数free(p)释放结点存储空间,这时p为空值(NULL)。 五、思考与提高 在main函数里如果去掉L=&a语句,会出现什么结果? 六、完整参考程序 链式线性表的建立、插入及删除。 #include #include #include #define LEN sizeof(LNode) //定义LEN为一个节点的长度 enum BOOL{False,True}; //定义BOOL型 typedef struct node {char data; //数据域 struct node *next;//指向下一个节点的指针 }LNode,*LinkList; void CreatList(LinkList &,int); //生成一个单链表 BOOL ListInsert(LinkList &,int,char); //在单链表中插入一个元素 BOOL ListDelete(LinkList &,int,char &); //在单链表中删除一个元素 BOOL ListFind_keyword(LinkList,char,int &); //按关键字查找一个元素 BOOL ListFind_order(LinkList,char &,int); //按序号查找一个元素 void ListPrint(LinkList); //显示单链表所有元素 void main() {LinkList L; BOOL temp; int num,loc,flag=1; char j,ch; printf("本程序实现链式结构的线性表的操作。\n"); printf("可以进行插入,删除,定位,查找等操作。\n"); printf("请输入初始时链表长度:"); //输入生成单链表时的元素个数 scanf("%d",&num); CreatList(L,num); //生成单链表 ListPrint(L); while(flag) { printf("请选择:\n"); printf("1.显示所有元素\n"); //显示链表元素 printf("2.插入一个元素\n"); //插入链表元素 printf("3.删除一个元素\n"); //删除链表元素 printf("4.按关键字查找元素\n"); //按关键字查找 printf("5.按序号查找元素\n"); //按序号查找 printf("6.退出程序\n"); //退出 scanf(" %c",&j);

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

课程: 算法与数据结构深度优先搜索——迷宫问题 课程设计 系电子信息与计算机科学系 专业计算机科学与技术 班级文计111-1 姓名毕萌玉,张菁,张帅 学号201190514122,10,11 任课教师高慧 学年学期2012-2013-2学期 2013 年6 月29 日

任务分配: ·程序员:张菁。主要任务:负责算法的设计,并完成源代码的编写。 ·测试员:张帅。主要任务:负责设计测试用程序,并对实验结果进行整理分析,最后完成实验报告的第三、第四部分内容,即测试结果与分析探讨部分。 ·文档员:毕萌玉。主要任务:负责撰写实验报告的第一、第二部分内容,即实验内容简介与算法描述。同时完成整个文档的整合,使整篇报告排版、文字风格统一。 一、简介 图的存储结构又称图的表示,其最常用的方法是邻接矩阵和邻接表。无论采用什么存储方式,其目标总是相同,即不仅要存储图中各个顶点的信息,同时还要存储顶点之间的所有关系。 图的遍历就是从指定的某个顶点(称其为初始点)出发,按照一定的搜索方法对图中的所有顶点各做一次访问的过程。根据搜索方法的不同,遍历有深度优先搜索遍历,广度优先搜索遍历。 请设计一个程序,能自动生成或者手动生成这样一个8*8矩阵,针对这个矩阵,程序判断是否能从起点经过迷宫走到终点。如果不能,请指出;如果能,请用图形界面标出走出迷宫的路径。如图3.5所示。 图3.5程序输出实例

二、算法说明 根据实验内容,本实验主要利用深度优先遍历搜索算法和栈出入元素算法 总流程图 迷宫的路径(流程图)

三、测试结果(宋体小三加粗,不需要缩进) 紧扣课程设计的题目类型和要求,设计提供相应的测试方法和结果。 对于需要比较不同算法性能优劣的题目,应设计并填写一张性能比较表格,列出不同算法在同一指标下的性能表现。仅仅罗列出一堆数据是不够的,还应将数字转化为图形、曲线等方式,帮助读者更直观地理解测试结果。 每个测试用例一般包括:测试输入、正确输出、实际输出、错误原因等。 需要注意的是,测试员的任务不是提供几组简单的数据让程序员容易通过,从而宣称该程序是正确的,而应该是千方百计设计“刁难”的数据,想办法让所测试的程序暴露出问题,这样才能真正帮助程序员完成正确的程序。 四、分析与探讨(宋体小三加粗,不需要缩进) 可分为两部分: 测试结果分析:需详细解释测试策略,对得到的数据进行分析,总结出算法的时空复杂度,得出自己对算法性能等方面分析的结论。 不局限于题目要求使用的算法,探讨更多解决问题的途径,或者提出自己的见解,给出改进算法以得到更好结果的建议。 附录源代码(宋体小三加粗,不需要缩进) 注1:所有正文均使用宋体五号书写,首行缩进2个字符; 注2:课程设计报告书打印或手写均可;

数据结构实验大纲

“数据结构”课程实验大纲 一、基本情况 1、实验总学时:36学时 2、适用专业:计算机科学与技术本科 3、实验教材: 二、实验的地位、作用和目的 数据结构课程开设每周一次(2学时)的实验课,目的是通过实验让学生体会理论与实践高度统一的学科特点,进一步认识理论、抽象、设计等三个过程及其相互关系,形成对学科范型更深入的体会和认识。其中,有一个单元是综合性的实验,如一个简单的信息管理系统的核心部分。它要求学生从分析问题出发,解决某一简单的实际问题。如使用多种数据结构完成一个计算问题。 学生应按照理论联系实际,理论指导实践的要求,在实际操作中规范地完成各项实验。通过实验工作,借助程序设计语言,在数据结构理论与程序使用的实际数据结构之间建立有机的联系,掌握运用数据结构、算法和程序解决一些简单问题的方法。 三、实验项目 实验一线性表的使用 1.实验目的和要求 本实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。通过本次实验还可帮助读者复习高级语言的使用方法。 2.实验内容 (1)城市链表 将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。 基本要求 ①给定一个城市名,返回其位置坐标; ②给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。 (2)约瑟夫环

约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。 基本要求 利用单向循环链表模拟上述过程,按照出列的顺序列出各人的编号。 (3)线性表的逆置 分别以不同存储结构实现线性表的就地逆置。线性表的就地逆置就是在原表的存储空间内将线性表(a1,a2,a3,…,an)逆置为(an,an-1,…,a2,a1)。 基本要求 用顺序存储结构实现线性表的就地逆置,并将结果输出。 用链式存储结构实现线性表的就地逆置,并将结果输出。 *(4)长整数运算 设计一个程序实现两个任意长的整数求和运算。 基本要求 利用双向循环链表实现长整数的存储,每个结点含一个整型变量。任何整型变量的范围是-(215-1)~(215-1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号相隔。 3. 实验学时 6学时 实验二栈、队列与递归算法设计 1.实验目的和要求 仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实验的目的在于使学习者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。 2.实验内容 (1)数制转换问题 将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。例如:(1348)10=(2504)8 基本要求:对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的

相关主题
文本预览
相关文档 最新文档