长沙理工大学数据结构链表的实现及应用实验报告

长沙理工大学数据结构链表的实现及应用实验报告
长沙理工大学数据结构链表的实现及应用实验报告

实 验 报 告

年级 班号 学号 姓名

实验名称: 第一次实验:简单学生管理系统

实验日期 2016年11月25日

计算机科学与技术系

2016年制

一、实验环境

Windows32位系统Microsoft Visual C++

二、实验目的

掌握链表的使用

三、实验内容

用单向链表实现的简单学生管理系统

四、数据结构与算法思想描述

对单链表的增删查改

五、程序清单

/* 函数信息:

菜单选项

void Menu();

初始化链表

void InitLink(node *head);

输出单个学生信息

void SingleShow(node *p);

尾插法

node* AddLink(node *p,char *num);

建立链表,并输入学生信息。

node *CreateLink(node *head);

查找学生信息,查找则返回查找位置前一个点

node *SearchLink(node *head, char *num);

增加学生信息,先进行查找,若已有则提示用户是否修改,否则增加void InsertLink(node *head, char *num);

修改学生信息,先进行查找,若已有则提示用户修改,否则退出

void ModifyLink(node *head, char *num);

删除学生信息

void DeleteLink(node *head, char *num);

显示所有学生信息

void Display(node *head)

*/

#include

#include

#include

#include

#include

#define MAXM 50 //学生管理系统名字学号成绩的最大字节数

#define Tip "\t\tName\t\tNumber\t\tScore\n"

int lenthLink = 0; //链表的长度

typedef struct node

{

char name[MAXM];

char number[MAXM];

char score[MAXM];

struct node *next;

}node;

int len = sizeof(node);

//菜单选项

void Menu()

{

printf("\n*******************************************************\n");

printf(" 请输入选项:\n");

printf(" 1、建立学生管理系统\n");

printf(" 2、查找学生信息\n");

printf(" 3、删除学生信息\n");

printf(" 4、增加学生信息\n");

printf(" 5、修改学生信息\n");

printf(" 6、显示所有学生信息\n");

printf(" 0、退出学生管理系统\n");

printf("*******************************************************\n"); }

//初始化链表

void InitLink(node *head)

{

lenthLink = 0;

head->next = NULL;

}

//输出单个学生信息

void SingleShow(node *p)

{

printf("\t\t%s\t\t",p->name);

printf("%s\t\t",p->number);

printf("%s\n",p->score);

}

//尾插法

node* AddLink(node *p,char *num)

p->next = (node *)malloc(len);

p = p->next;

p->next = NULL;

strcpy(p->number,num);

printf("请输入学生姓名:\n");

getchar();

scanf("%s",p->name);

printf("请输入学生成绩:\n");

getchar();

scanf("%s",p->score);

lenthLink++;

return p;

}

//建立链表,并输入学生信息。

node *CreateLink(node *head)

{

InitLink(head);

char num[MAXM];

node *p = head;

printf("请输入学生学号,以0结束:\n");

getchar();

while(scanf("%s",num) && strcmp(num,"0")!=0 && num[0] != '-') //当输入学号为0或负数时结束输入

{

//尾插法建立

p = AddLink(p,num);

printf("请输入学生学号,以0结束:\n");

}

return head;

}

//查找学生信息,查找则返回查找位置前一个点

node *SearchLink(node *head, char *num)

{

node *p = head;

if(!head->next)

{

printf("尚未有学生信息!\n");

}

else

{

while(p->next)

{

break;

p = p->next;

}

}

return p;

}

//增加学生信息,先进行查找,若已有则提示用户是否修改,否则增加void InsertLink(node *head, char *num)

{

char ch;

node *p = SearchLink(head,num);

if(p->next)

{

p = p->next;

printf("已查找到此学生信息,是否要修改学生信息?(Y/N)\n");

printf(Tip);

SingleShow(p);

getchar();

scanf("%c",&ch);

if(ch == 'Y')

{

strcpy(p->number,num);

printf("请输入学生姓名:\n");

getchar();

scanf("%s",p->name);

printf("请输入学生成绩:\n");

getchar();

scanf("%s",p->score);

printf("-----修改成功-----\n");

}

}

else

{

//尾端插入学生信息

p = AddLink(p,num);

printf("-----添加成功-----\n");

}

}

//修改学生信息,先进行查找,若已有则提示用户修改,否则退出

void ModifyLink(node *head, char *num)

{

if(!p->next)

{

printf("系统里面没有此学生信息\n");

}

else

{

p = p->next;

printf("此学生信息如下:\n");

printf(Tip);

SingleShow(p);

printf("请输入学生姓名:\n");

getchar();

scanf("%s",p->name);

printf("请输入学生成绩:\n");

getchar();

scanf("%s",p->score);

printf("-----修改成功-----\n");

}

}

//删除学生信息

void DeleteLink(node *head, char *num)

{

node *p = SearchLink(head,num); //查找到要删除节点的前节点if(p->next)

{

node *q = p->next; //要删除的节点

p->next = q->next; //删除节点

delete(q);

printf("-----删除成功-----\n");

}

else

{

printf("系统里面没有此学生信息");

}

}

//显示所有学生信息

void Display(node *head)

{

node *p = head->next;

system("cls");

if(!head->next)

{

Menu();

return;

}

else

{

printf("\n\n*************************************************************** ***********\n");

printf("\t\tThe informations of the student system:\n\t\t(The number of all the students is %d)\n",lenthLink);

printf(Tip);

while(p)

{

SingleShow(p);

p = p->next;

}

printf("****************************************************************** ********\n");

}

}

int main()

{

int a;

node *head, *p;

char num[MAXM];

//初始化

Menu();

head = (node *)malloc(len);

p = NULL;

//循环菜单

while(scanf("%d",&a)&& a>=0)

{

if(!a) //输入0退出程序

exit(0);

else if(a == 1) //建立学生管理系统

{

head = CreateLink(head);

Display(head);

}

{

printf("请输入要查找的学生学号:\n");

getchar();

scanf("%s",num);

p = SearchLink(head,num);

if(p->next)

{

printf(Tip);

SingleShow(p->next);

printf("-----查找成功-----\n");

}

else

printf("系统里面没有此学生信息\n");

}

else if(a == 3) //删除学生信息

{

printf("请输入要删除的学生学号:\n");

getchar();

scanf("%s",num);

DeleteLink(head,num);

}

else if(a ==4) //增加学生信息

{

printf("请输入学生学号:\n");

getchar();

scanf("%s",num);

InsertLink(head,num);

}

else if(a == 5) //修改学生信息

{

printf("请输入要修改的学生学号:\n");

getchar();

scanf("%s",num);

ModifyLink(head,num);

}

else if(a == 6) //显示学生信息

Display(head);

printf("\n");

system("pause");

system("cls");

Menu();

}

return 0;

}

六、程序执行结果及其分析

1、建立学生管理系统

建立之后显示信息

查找不存在的学生信息

4、增加学生信息

5、修改学生信息

数据结构实验报告格式

《数据结构课程实验》大纲 一、《数据结构课程实验》的地位与作用 “数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: (1)内容丰富,学习量大,给学习带来困难; (2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点; (3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度; (4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。 根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。实验学时为18。 二、《数据结构课程实验》的目的和要求 不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。 三、《数据结构课程实验》内容 课程实验共18学时,要求完成以下六个题目: 实习一约瑟夫环问题(2学时)

长沙理工大学单片机课设

CHENGNAN COLLEGE OF CUST 题目:《单片机原理及应用》课程项目设计温度的检测与显示的设计 姓名:柳豪 学号:201582250120 班级: 电气1501 专业:电气工程及其自动化 所在院(系): 电气工程系 指导教师:朱豆 日期:2017年12月

目录 1 温度检测的发展过程 2.1 设计目的 2.2 设计原则 2.3 设计思路 2.3.1硬件设计原则 2.4 系统的组成 3 温度检测系统的 电路图 4 硬件设计 4.1 单片机的选用4.2 数据采集系统4.2.1热电偶的优点4.2.2系统组成 4.2.3系统分析计算4.2.4 芯片LM324的介绍 4.3 A/D转换器——ADC0809介绍 4.3.1 ADC0809的工作过程 4.3.2 2ADC0809管脚结构图 4.4 显示系统设计4.4.1 8255A扩展芯片的介绍 4.4.2 8255与MCS51的接口 4.4.3 LED显示单元 5 程序流程图及程序5.1 程序流程图 5.2 程序

1. 温度检测的发展过程 在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。其中,温度是需要测量和控制的重要参数之一。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。 采用MCS-51单片机来对温度进行检测,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。 2.1 设计目的 本设计最终所要达到的目的有以下几个方面: a)掌握单片机各部分的使用,可以依据要求进行小规模的编程; b)熟悉A/D转换的过程,及其在实践中的应用; c)熟悉各种温度传感器的使用,能根据不同的电路选择合适类型的传感器。 2.2 设计原则 2.2.1 硬件设计原则 a)我们结合典型的A/D转换电路,选择ADC0809芯片做主打芯片,实现数模转换能; b)此设计利用A/D转换芯片配以显示电路用其所需要的外围电路实现温度显示,具有编程灵活、便于显示水温功能的扩充(也可用于炉温显示)、精确度高等特点; c)硬件结构设计应与软件设计方案一并考虑; d)整个系统相关器件力求性能匹配,与环境相适应。2.3.2 软件系统原则 a)我们的程序采用模块化设计,软件结构清晰,简洁; b)我们将设计的程序存储区及数据存储区尽量合理化规划,便于设计功能的扩展; c)我们对各个功能程序与运行结果及运行要求都作了简要说明,以便查询。 2.3 设计思路 本系统用热电偶为检测温度元件,通过温度传感器将被测温度转换为电量,经过放大滤波电路处理,其中用到LM324四运放集成电路来实现。经过放大滤波电路处理后,由模数转换器将模拟量转换为数字量,结合典型的A/D转换电路,选择ADC0809芯片做主打芯片,实现数模转换功能再与单片机相连,其中用AT89C51芯片代替8031系列芯片。通过8255可编程扩展芯片对温度进行报警限制处理,然后再由LED数码管进行跟踪显示。 2.4 系统的组成 为了更直观的了解本设计,我将整个系统分为了三个设计模块:LED显示模块、A/D转换模块以及数据采集模块,以下就是各个模块的功能简介: a)LED模块为系统提供采时,通过使用典型的LED数码管,结合动态扫描程序实现温度的显示功能;

长沙理工大学机械控制工程基础Matlab实验报告

《机械控制工程基础》实验报告一 班级·学号机制10-04 宜波实验日期 12.7 任课教师唐宏宾

计算结果: 2、题目:在Matlab中表达系统G(s)=2(s+2)(s+7)/(s+3)(s+7)(s+9)。源程序: z=[-2 -7]; p=[-3 -7 -9]; k=2; sys=zpk(z,p,k) 计算结果: 3、题目: 源程序: numh=[1 1]; denh=[1 2];

sysh=tf(numh,denh); numg=[1]; deng=[500 0 0]; sysg=tf(numg,deng); sys=feedback(sysg,sysh) 计算结果: 4、题目: 源程序: 计算结果:

5、题目:已知二阶系统 G(S)=1/s2+2ζs+1 Matlab法绘制ζ分别取值0.1、0.25、0.5、1.0时系统的单位脉冲响应。 源程序: t=[0:0.1:10]; num=1; zeta1=0.1;den1=[1 2*zeta1 1];sys1=tf(num,den1); zeta2=0.25;den2=[1 2*zeta2 1];sys2=tf(num,den2); zeta3=0.5;den3=[1 2*zeta3 1];sys3=tf(num,den3); zeta4=1.0;den4=[1 2*zeta4 1];sys4=tf(num,den4); impulse(sys1,sys2,sys3,sys4,t); grid on; 计算结果: 6、题目:已知二阶系统 G(S)=1/s2+2ζs+1 Matlab法绘制ζ分别取值0.1、0.2、0.4、0.7、1.0、2.0是的系统的单位阶跃相应。

(完整版)数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 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)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

数据结构实验报告完整

华北电力大学 实验报告| | 实验名称数据结构实验 课程名称数据结构 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:2015/7/3

实验报告说明: 本次实验报告共包含六个实验,分别为:简易停车场管理、约瑟夫环(基于链表和数组)、二叉树的建立和三种遍历、图的建立和两种遍历、hash-telbook和公司招工系统。 编译环境:visual studio 2010 使用语言:C++ 所有程序经调试均能正常运行 实验目录 实验一约瑟夫环(基于链表和数组) 实验二简易停车场管理 实验三二叉树的建立和三种遍历 实验四图的建立和两种遍历 实验五哈希表的设计

实验一:约瑟夫环 一、实验目的 1.熟悉循环链表的定义和有关操作。 二、实验要求 1.认真阅读和掌握实验内容。 2.用循环链表解决约瑟夫问题。 3.输入和运行编出的相关操作的程序。 4.保存程序运行结果 , 并结合输入数据进行分析。 三、所用仪器设备 1.PC机。 2.Microsoft Visual C++运行环境。 四、实验原理 1.约瑟夫问题解决方案: 用两个指针分别指向链表开头和下一个,两指针依次挪动,符合题意就输出结点数据,在调整指针,删掉该结点。 五、代码 1、基于链表 #include using namespace std; struct Node { int data; Node* next; }; void main() { int m,n,j=1; cout<<"请输入m的值:";cin>>m; cout<<"请输入n的值:";cin>>n; Node* head=NULL; Node* s=new Node; for(int i=1;i<=n;i++) { Node* p=new Node; p->data=n+1-i;

长沙理工大学学生网上选课操作规程

长沙理工大学学生网上选课操作规程 1、如何登陆选课系统与修改密码? (1)在IE浏览器地址栏中输入地址(如:http://210.43.188.40),按回车,选择“网上选课通道一”或“网上选课通道二”图标,即可打开学生网上选课系统主页(图1-1)。 图1-1 (2)单击“用户登录”,输入学号、密码和验证码(密码与学号相同),单击“登录”按钮,即可登录网上选课系统(图1-2)。 图1-2 (3)登录系统后,单击菜单项“其它”下面的“修改个人密码”菜单进行密码修改。

2、学生如何选理论课程? (1) 单击菜单项“网上选课”,即可展开相应页面(图1-3)。 图1-3 (2) 单击“正选”按钮,课程范围选择“主修(本年级/专业)”,然后单击“检索”按钮,即可弹出相应窗体(图1-4)。 图1-4

(3) 选定课程前的复选框“”,单击课程后面的“选择”按钮,选定上课班号→任课老师。图1-5 图1-5 (4) 单击“确定”按钮,然后单击“提交”按钮。完成该课程的选定。 备注:A、其它课程选课流程同上。 B、选课超过上限系统会自动提示。 图1-6 (5) 单击“选课结果”菜单项,可以对已选定的课程进行退选。 (6) 全校性公共选课流程:单击“选课结果”菜单项,课程范围选择“主修(公共任选)”,然后单击

“检索”按钮,即可弹出相应窗体(图1-7)。 图1-7 (7) 选定需要修读的课程,选择相应的“上课班号→任课老师”。即可完成公共任选课的选课。 3、学生如何选环节? (1) 单击“选环节”菜单项,单击“检索”按钮。选择相应课程和指导老师。具体操作步骤与理论课程选课一致。 (2) 单击“选环节结果”菜单项,可以对已经选定的环节进行退选。

长沙理工大学电工技术实习报告

长沙理工大学电工技 术实习报告 学院:电气与信息工程学院 专业:电气工程及其自动化 班级:工业电气自动化1101班 学号:201197250115 姓名:左明亮 时间:10月24日—10月28日 地点:一教7楼 指导老师:廖晓科、刘辉

实习项目一 室内简单照明电路安装 实习目的: ◆了解安全用电常识 ◆掌握电工基本技能 ◆掌握常用电工器件使用 实习要求: ◆熟悉实习工具的使用 ◆掌握简单照明线路接线 ◆接线线路准确、节省、美观 实习内容 ◆安全用电常识 ◆电工工具和材料的认识及其使用 ◆导线及导线与接线柱的连接 ◆布局和走线 工作原理: 用电器支路通电,获得电流,用电器工作。 ?电路图如下:

注意事项: 注意导线之间的接线方法,注意人身安全。 实习步骤: 合上闸刀开关,主电路通电,白炽灯有电流通过, 发光。再合上支路开关,日光灯有电流流过,发光; 打开闸刀开关,白炽灯和日光灯熄灭;闸刀开关控 制整个电路。 实验小结: 第一天认识了廖老师,其风趣幽默搞笑于一体,但 不失纪律,我们在”皇上”的悉心教导下开始认识 电工。我们初步了解基本的电器元件知识,如开关, 灯泡,线路连接等。这是我们第一次有理论向实践 的一次转变,通过简单照明电路的安装,也是首次 把理论运用于生活。

实习项目二 电度表配电线路的安装与调试 实习目的: ◆掌握电工基本技能 ◆学会使用电度表并了解其内部结构 ◆了解日光灯的工作原理 ◆练习如何认识和使用试电笔 ◆了解空气开关的作用和构造 ◆学会正确安装电度表以及照明电路 实习内容 ◆简单照明电路 ◆电度表配电电路 ◆空气开关结构 实习要求: ◆正确使用电能表 ◆学会电能表的接线方法 ◆接线线路准确、节省、美观

数据结构实验报告模板

2009级数据结构实验报告 实验名称:约瑟夫问题 学生姓名:李凯 班级:21班 班内序号:06 学号:09210609 日期:2010年11月5日 1.实验要求 1)功能描述:有n个人围城一个圆圈,给任意一个正整数m,从第一个人开始依次报数,数到m时则第m个人出列,重复进行,直到所有人均出列为止。请输出n个人的出列顺序。 2)输入描述:从源文件中读取。 输出描述:依次从显示屏上输出出列顺序。 2. 程序分析 1)存储结构的选择 单循环链表 2)链表的ADT定义 ADT List{ 数据对象:D={a i|a i∈ElemSet,i=1,2,3,…n,n≧0} 数据关系:R={< a i-1, a i>| a i-1 ,a i∈D,i=1,2,3,4….,n} 基本操作: ListInit(&L);//构造一个空的单链表表L ListEmpty(L); //判断单链表L是否是空表,若是,则返回1,否则返回0. ListLength(L); //求单链表L的长度 GetElem(L,i);//返回链表L中第i个数据元素的值; ListSort(LinkList&List) //单链表排序 ListClear(&L); //将单链表L中的所有元素删除,使单链表变为空表 ListDestroy(&L);//将单链表销毁 }ADT List 其他函数: 主函数; 结点类; 约瑟夫函数 2.1 存储结构

[内容要求] 1、存储结构:顺序表、单链表或其他存储结构,需要画示意图,可参考书上P59 页图2-9 2.2 关键算法分析 结点类: template class CirList;//声明单链表类 template class ListNode{//结点类定义; friend class CirList;//声明链表类LinkList为友元类; Type data;//结点的数据域; ListNode*next;//结点的指针域; public: ListNode():next(NULL){}//默认构造函数; ListNode(const Type &e):data(e),next(NULL){}//构造函数 Type & GetNodeData(){return data;}//返回结点的数据值; ListNode*GetNodePtr(){return next;}//返回结点的指针域的值; void SetNodeData(Type&e){data=e;}//设置结点的数据值; void SetNodePtr(ListNode*ptr){next=ptr;} //设置结点的指针值; }; 单循环链表类: templateclass CirList { ListNode*head;//循环链表头指针 public: CirList(){head=new ListNode();head->next=head;}//构造函数,建立带头节点的空循环链表 ~CirList(){CirListClear();delete head;}//析构函数,删除循环链表 void Clear();//将线性链表置为空表 void AddElem(Type &e);//添加元素 ListNode *GetElem(int i)const;//返回单链表第i个结点的地址 void CirListClear();//将循环链表置为空表 int Length()const;//求线性链表的长度 ListNode*ListNextElem(ListNode*p=NULL);//返回循环链表p指针指向节点的直接后继,若不输入参数,则返回头指针 ListNode*CirListRemove(ListNode*p);//在循环链表中删除p指针指向节点的直接后继,且将其地址通过函数值返回 CirList&operator=(CirList&List);//重载赋

数据结构实验报告图实验

图实验一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10;

template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif MGraph.cpp

#include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) {

电子的商务作业长沙理工大学

确认作业有没有改动 第一章 1、概念题 在电子商务的简单概念中,“电子”和“商务”的内涵分别包括哪些内容? 答:电子的内容:网络技术、Web技术、数据库技术及其他多种IT技术。 商务的内容:提供和获取有形商品或无形服务过程中涉及到的一切业务流程。 (2)区分狭义和广义电子商务的概念。 答:广义的电子商务(EB),是指利用各种信息技术对各种商务/业务活动实现电子化。 狭义的电子商务(EC),特指运用Internet开展的交易。 (3) 什么是传统商务、完全电子商务和不完全电子商务? 答:A、如果在全部商务活动中,所有业务步骤都是以传统方式完成的,则称之为传统商务。 B、如果在全部商务活动中,所有业务步骤都是以数字化方式完成的,则称之为完全电子商务。 C、现实生活中还存在着相当一部分介于两者之间的商务形态,这种在全部商务活动中,至少有一个或一个以上的业务环节应用了Internet技术的商务形态,一般称为不完全电子商务。 (4)按交易对象分的电子商务主要包括哪几类? 答:可分为一下六种: A、企业与消费者间的电子商务(B2C)。 B、企业与企业间的电子商务(B2B)。

C、消费者与消费者间的电子商务(C2C)。 D、企业与政府(B2G)。 E、政府与消费者(C2G)。 F、政府机构之间(G2G)。 (5)简述电子商务系统的组成要素及其作用。 答:主要的组成有 A、消费者,提供消费功能。 B、商家,给消费者提供商品,并制定一些列规定来提高自己的信誉度。 C、银行,提供货款的代支付功能。 D、认证机构,作为消费者和商家的买卖活动见证者。 E、行政管理部门,制定相关法规并监督电子商务活动,保证交易合法进行。 F、配送中心,负责把商品长卖家配送到买家。 (6)电子商务系统由哪几个层次构成?每一层次主要用于解决什么问题? 答:网络层,为电子商务系统提供网络平台。 计算机系统层,为电子商务系统提供基础服务平台。 应用软件层,电子商务系统的应用平台。 (7) 电子商务的主要功能包括哪几部分? 答:A、内容管理 B、协同处理

长沙理工大学电子商务作业(1-8章完整版)

1.概念题 (1)“电子”指的是“电子技术”,主要包含网络技术、web技术、数据库技术及其他多种Internet技术; “商务”指的是商务活动,包括提供和获取有形商品或无形服务过程中涉及的一切业务流程,如交换供求信息、达成买卖意向、销售、售后服务等。 (2)广义的电子商务(EB)是指利用各种信息技术使各种商务/业务活动实现电子化; 狭义的电子商务(EC)特指运用Internet开展的交易活动,即基于数据的处理和传输,通过开放的网络进行的商业交易,包括qiyeyuqiye、企业与消费者、企业与政府之间的交易活动。 两者存在的主要差别: a.在“电子技术”的应用方面,EB比EC包含的范围广; b.在“商务活动”的涵盖范围上,EB比Ec包含的内容多。 (3)a.如果在全部商务活动中,所有业务步骤都是以传统的方式完成的,则称为传统商务; b.如果在全部商务活动中,所有业务步骤都是以数字化方式完成的,则称为完全电子 商务; c.介于以上两者之间,一部分业务过程是通过传统方式完成,另一部分则应用了IT技术手段,称为不完全电子商务。 (4)按交易对象,可以把电子商务分为六类:B2C,B2B,C2C,B2G,C2G,G2G。 B、C、G分别代表企业(Business),个人消费者(Consumer),政府(Government)。 (7)电子商务的主要功能: a.内容管理 b.协同管理 c.电子交易 第二章 (1)网络包括开放性互联参考模型、局域网技术、广域网技术、Internet技术。 通信技术:主要通信技术有数字通信技术,程控交换技术,信息传输技术,通信网络技术,数据通信与数据网,ISDN与ATM技术,宽带IP技术,接入网与接入技术。 (2)集中式计算模式、分布式计算模式和Web计算机模式。 (3)EDI(电子数据交换)是按照协议对具有一定结构特征的标准信息经数据通信网络,在计算机系统之间进行交换和自动处理。 工作原理: a、发送方计算机应用系统生成原始用户数据 b、发送报文的数据映射和翻译 c、发送标准的EDI文件 d、贸易伙伴获取标准的EDI文件 e、接收文件的映射和翻译 f、接收方应用系统处理翻译后的文件

长沙理工大学工程地质实验报告范文

长沙理工大学工程地质实验报告范文Model report of Engineering Geology Experiment of Cha ngsha University of science and technology

长沙理工大学工程地质实验报告范文 小泰温馨提示:实验报告是把实验的目的、方法、过程、结果等记录下来,经过整理,写成的书面汇报。本文档根据实验报告内容要求展开说明,具有实践指导意义,便于学习和使用,本文下载后内容可随意修改调整及打印。 一、名词解释(每小题2分,共12分) (1)工程地质问题: 二、填空题(每空0.5分,共12分) (1)外力地质作用主要包括有 (2)条痕是,通常将矿物在刻画后进行观察。 (3)变质岩的结构具有和两大类。 (4)古生代包括有: (5)褶皱的主要要素包括: (6)地下水的运动有: (7)沉积岩的构造主要有: 三、简答题(每小题7分,共28分)

(1)何谓流砂?它一般在哪些情况下最容易发生? (2)何谓风化作用?影响风化作用的主要因素有哪些? (3)按照埋藏条件,地下水可以分为哪几种类型? (4)何谓现场原位测试?现场测试的方法主要有哪些? 四、多项选择题(每题2 分,共16分) (1)下列选项中,属于岩石工程地质性质指标的是。 (A)密度; (B)吸水率;(C)弹性模量;(D)渗透系数 (2)河流的地质作用包括。 (A)侵蚀作用; (B)腐蚀作用;(C)搬运作用; (D)沉积作用 (3)若稳定系数K,则斜坡平衡条件将破坏而滑坡。 (A)大于1;(B)大于等于1;(C)小于1;(D)小于等于1 (4)滑坡的防治措施包括。

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有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;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

长沙理工大学数据结构链表的实现及应用实验报告

实 验 报 告 年级 班号 学号 姓名 实验名称: 第一次实验:简单学生管理系统 实验日期 2016年11月25日 计算机科学与技术系 2016年制

一、实验环境 Windows32位系统Microsoft Visual C++ 二、实验目的 掌握链表的使用 三、实验内容 用单向链表实现的简单学生管理系统 四、数据结构与算法思想描述 对单链表的增删查改 五、程序清单 /* 函数信息: 菜单选项 void Menu(); 初始化链表 void InitLink(node *head); 输出单个学生信息 void SingleShow(node *p); 尾插法 node* AddLink(node *p,char *num); 建立链表,并输入学生信息。 node *CreateLink(node *head); 查找学生信息,查找则返回查找位置前一个点 node *SearchLink(node *head, char *num); 增加学生信息,先进行查找,若已有则提示用户是否修改,否则增加void InsertLink(node *head, char *num); 修改学生信息,先进行查找,若已有则提示用户修改,否则退出 void ModifyLink(node *head, char *num); 删除学生信息 void DeleteLink(node *head, char *num); 显示所有学生信息 void Display(node *head) */ #include #include #include #include #include #define MAXM 50 //学生管理系统名字学号成绩的最大字节数 #define Tip "\t\tName\t\tNumber\t\tScore\n"

数据结构实验报告--图实验

图实验 一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e)

{ int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: "; cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } } template void MGraph::DFSTraverse(int v) { cout << vertex[v]; visited[v] = 1; for(int j = 0; j < vertexNum; j++) if(arc[v][j] == 1 && visited[j] == 0) DFSTraverse(j); } template void MGraph::BFSTraverse(int v) { int Q[MaxSize]; int front = -1, rear = -1; cout << vertex[v]; visited[v] = 1; Q[++rear] = v; while(front != rear) { v = Q[++front]; for(int j = 0;j < vertexNum; j++) if(arc[v][j] == 1 && visited[j] == 0){ cout << vertex[j]; visited[j] = 1;

数据结构实验报告

数据结构实验报告 第 6 次实验 学号:20141060106 姓名:叶佳伟 一、实验目的 1、复习图的逻辑结构、存储结构及基本操作; 2、掌握邻接矩阵、邻接表及图的创建、遍历; 3、了解图的应用。 二、实验内容 1、(必做题)假设图中数据元素类型是字符型,请采用邻接矩阵或邻接表实现图的以下基本操作: ( 1)构造图(包括有向图、有向网、无向图、无向网); ( 2)根据深度优先遍历图; ( 3)根据广度优先遍历图。 三、算法描述 (采用自然语言描述) 四、详细设计 (画出程序流程图) 五、程序代码 (给出必要注释) #include #include #include #include #include #define INFINITY 255678 /*赋初值用*/ #define MAX_VERTEX_NUM 20 /* 最大顶点个数*/ enum {DG, DN, UDG, UDN}; typedef struct ArcCell {

int adj;/*顶点关系类型,对无权图,用1(是)或0(否)表示相邻否;对带权图,则为权值*/ char *info;/*弧相关信息指针*/ }AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { char vexs[MAX_VERTEX_NUM][5];/*顶点向量*/ AdjMatrix arcs; /*邻接矩阵*/ int vexnum, arcnum;/*图的当前顶点数和弧数*/ int kind; }MGraph; void CreateDG(MGraph *G); void CreateDN(MGraph *G); void CreateUDG(MGraph *G); void CreateUDN(MGraph *G); int LocateVex(MGraph *G, char v[]); void print(MGraph *G); int main(void) { MGraph *G; G = (MGraph *)malloc(sizeof(MGraph)); printf("请选者0-有向图,1-有向网,2-无向图,3-无向网: "); scanf("%d", &G->kind); switch(G->kind) { case DG : CreateDG(G); print(G); break; case DN : CreateDN(G); print(G); break; case UDG : CreateUDG(G); print(G); break; case UDN : CreateUDN(G);

数据结构实验报告 - 答案汇总

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序 的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表 LinkList CreatList(void); //函数,用头插入法建立带头结点的单链表 ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点 void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存

相关文档
最新文档