文档库 最新最全的文档下载
当前位置:文档库 › 《数据结构》 实验报告2

《数据结构》 实验报告2

《数据结构》 实验报告2
《数据结构》 实验报告2

xxx 实验报告

课程名称数据结构实验

名称

实验二栈和队列的应用

系部班级姓名学号

实验

时间2012 年10月15日21时30分~时分地点机位

评语

指导教师:

成绩

实验二栈和队列的应用

一、实验目的

1. 掌握栈的顺序表示和实现

2. 掌握队列的链式表示和实现

二、实验内容

1. 编写一个程序实现顺序栈的各种基本运算。

2. 实现队列的链式表示和实现。

三、实验步骤及结果

编写一个程序实现顺序栈的各种基本运算:

1.初始化顺序栈

2.插入元素

3.删除栈顶元素

4.取栈顶元素

5.置空顺序栈

实现队列的链式表示和实现:

1.初始化并建立链队列

2. 入链队列

3. 出链队列

4. 遍历链队列

四、程序主要语句及作用

1. 编写一个程序实现顺序栈的各种基本运算。

#include

#include

#define ElemType int

typedef struct Qnode

{ ElemType data;

struct Qnode *next;

}Qnodetype;

typedef struct

{ Qnodetype *front;

Qnodetype *rear;

}Lqueue;

void Lappend(Lqueue *q,int x)

{ Qnodetype *s;

s=(Qnodetype*)malloc(sizeof(Qnodetype));

s->data=x;

s->next=NULL;

q->rear->next=s;

q->rear=s;

}

void creat(Lqueue *q)

{ Qnodetype *h;

int i,n,x;

printf("shurujiangjianlilianduilieyuansudegeshu:n= ");

scanf("%d",&n);

h=(Qnodetype*)malloc(sizeof(Qnodetype));

h->next=NULL;

q->front=h;

q->rear=h;

for(i=1;i<=n;i++)

{ printf("lianduiliedi%dgeyuansudezhiwei:",i);

scanf("%d",&x);

Lappend(q,x);

}

}

ElemType Ldelete(Lqueue *q)

{ Qnodetype *p;

ElemType x;

if(q->front==q->rear)

{ printf("duilieweikong!\n");

x=0;

}

else

{ p=q->front->next;

q->front->next=p->next;

if(p->next==NULL)

q->rear=q->front;

x=p->data;

free(p);

}

return(x);

}

void display(Lqueue *q)

{ Qnodetype *p;

p=q->front->next;

printf("\nlianduilieyuansuyiciwei:");

while(p!=NULL)

{ printf("%d-->",p->data);

p=p->next;

}

printf("\n\nbianlilianduiliejieshu!\n");

}

main()

{ Lqueue *p;

int x,cord;

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

do

{ printf("\n lianduiliedejibencaozuo\n ");

printf("=========================================\n");

printf(" zhucaidan \n");

printf("=========================================\n");

printf(" 1 chushihua \n");

printf(" 2 rulianduilie \n");

printf(" 3 chulianduilie \n");

printf(" 4 bianlilianduilie \n");

printf(" 5 jieshuyunxing \n");

printf("==========================================\n");

scanf("%d",&cord);

switch(cord)

{ case 1:

{ p=(Lqueue *)malloc(sizeof(Lqueue));

creat(p);

display(p);

}break;

case 2:

{ printf("shurudulieyuansudezhi:x=");

scanf("%d",&x);

Lappend(p,x);

display(p);

}break;

case 3:

{ printf("chulianduilieyuansu:x=%d\n",Ldelete(p));

display(p);

}break;

case 4:

{display(p);}break;

case 5:

{exit (0);}

}

}while (cord<=5);

}

2. 实现队列的链式表示和实现。

#include

#include

#define MAXNUM 20

#define ElemType int

typedef struct

{ ElemType stack[MAXNUM];

int top;

}SqStack;

void InitStack(SqStack *p)

{ if(!p)

printf("Eorror");

p->top=-1;

}

void Push(SqStack *p,ElemType x)

{ if(p->top

{ p->top=p->top+1;

p->stack[p->top]=x;

}

else

printf("Overflow!\n");

}

ElemType Pop(SqStack *p)

{ ElemType x;

if(p->top!=0)

{ x=p->stack[p->top];

printf("yiqiandezhandingshujuyuansu%dyijingbeishanchu!\n",p->stack[p->top]);

p->top=p->top-1;

return(x);

}

else

{ printf("Underflow!\n");

return(0);

}

}

ElemType GetTop(SqStack *p)

{ ElemType x;

if(p->top!=0)

{ x=p->stack[p->top];

return(x);

}

else

{ printf("Underflow!\n");

return(0);

}

}

void OutStack(SqStack *p)

{ int i;

printf("\n");

if(p->top<0)

printf("zheshiyigekongzhan!");

printf("\n");

for(i=p->top;i>=0;i--)

printf("di%dgeshujuyuansusshi:%6d\n",i,p->stack[i]); }

void setEmpty(SqStack *p)

{

p->top= -1;

}

main()

{ SqStack *q;

int y,cord;ElemType a;

do{

printf("\n");

printf("diyicishiyongbixuchushihua!\n");

printf("\n");

printf("\n zhucaidan \n");

printf("\n 1 chushihuashunxuzhan \n");

printf("\n 2 charuyigeyuansu \n");

printf("\n 3 shanchuzhandingyuansu \n");

printf("\n 4 quzhandingyuansu \n");

printf("\n 5 zhikongshunxuzhan \n");

printf("\n 6 jieshuchengxuyunxing \n");

printf("\n--------------------------------\n");

printf("qingshurunindexuanze( 1, 2, 3, 4, 5,6)");

scanf("%d",&cord);

printf("\n");

switch(cord)

{ case 1:

{ q=(SqStack*)malloc(sizeof(SqStack));

InitStack(q);

OutStack(q);

}break;

case 2:

{ printf("qingshuruyaocharudeshujuyuansu:a=");

scanf("%d",&a);

Push(q,a);

OutStack(q);

}break;

case 3:

{ Pop(q);

OutStack(q);

}break;

case 4:

{ y=GetTop(q);

printf("\nzhandingyuansuwei:%d\n",y);

OutStack(q);

}break;

case 5:

{ setEmpty(q);

printf("\nshunxuzhanbeizhikong!\n");

OutStack(q);

}break;

case 6:

exit(0);

}

}while (cord<=6);

}

五、实验总结

本次试验让我认识到了自己的不足之处太多:

1.大部分的时间都用在了编程上,主要是因为C语言掌握的问题,C语言基础不好特别是对于C语言中链表的一些定义和基本操作不够熟练,导致在编程过程中还要不断的拿着c语言的教材查找,所以今后还要对C语言多练习,多动手,多思考。

2.数据结构有很强的逻辑性,因此我认为如果在上机之前先把逻辑搞清楚很重要,不管是对算法的设计还是对程序的调试都有很大帮助。

3.

经过一次上机实践,我认为实践课很重要,上理论课只是纸上谈兵,只是被动地接受,而实践课上能将学过的知识利用起来,同时还有一些东西只能是自己上机实践才能慢慢探索出的。

所以我在做试验的时候特别费劲,特别吃力,这也是事出有因的。通过自我反省,总结不足之处后,我还是脚踏实地去查找资料,包括请教老师,上网搜索数据库线性表操作的优秀代码,经过不断的验证,修改和深入的研究,最终使得自己的程序得以运行,实现了实验的最终目的和要求。

也许每次实验都是有个过程的,虽然过程比较繁琐和艰难,但是我觉得只要认真的分析实验内容,积极搜索实验所需材料,再多多请教老师和同学,那么实验就不会困难重重。自己要学习的地方太多,以后更要努力学习数据结构。

数据结构实验报告格式

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

汇编语言程序设计实验教程第二章实验报告

汇编语言程序设计实验教程第二章 实验报告

实验2.1 用表格形式显示字符 1.题目:用表格形式显示ASCII字符SMASCII 2.实验要求: 按15行*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。 3.提示: (1)显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:mov ah,02h mov dl,输出字符的ASCII码 int 21h (2)显示空白符时,用其ASCII码0置入dl寄存器。每行结束时,用显示回车(ASCII 为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。 (3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCII字符。具体做法是:在显示空白或回车、换行符前用指令 push dx 把dl的内容保存到堆栈中去。在显示空白或回车、换行符后用指令 pop dx 恢复dl寄存器的原始内容。 4.程序清单: code segment assume cs:code start: mov dx,0010h next: mov cx,10h loop1: mov ah,02h int 21h inc dx push dx

int 21h pop dx loop loop1 push dx mov dl,0ah int 21h mov dl,0dh int 21h pop dx cmp dx,100h jb next mov ah,4ch int 21h code ends end start 5.运行结果如下: 6.实验总结: 通过本次实验我深刻的知道用汇编语言编译程序的方法,掌握了如何合理的利用各个寄存器进行程序的控制操作,初步了解到循环程序的控制方法,以及dos中断调用的基本要领对学习汇编语言有了非常好的帮助作用! 汇编语言实验二查找匹配字符串 一、目的 查找匹配字符串SEARCH

数据结构实验一顺序表问题及实验报告模板 - Copy

实验一顺序表问题 【实验报告】 《数据结构与算法》实验报告一 学院:计算机与信息学院班级: 学号:姓名: 日期:程序名: 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个整数,产生顺序表,并输出结点值。 调试数据:9 8 7 6 5 4 3 2 1 2.从键盘输入1个整数,在顺序表中查找该结点。若找到,输出结点的位置;若找不到, 则显示“找不到”。 调试数据:第一次输入11,第二次输入3 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出顺序表所有结点值,观察输出结果。 调试数据:第一次insert "11" after "6" ,第二次insert "86" at "2" 4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 调试数据:第一次delete the number at "2" ,第二次delete value "9" 注意:顺序表输出表现形式如下(实验报告上为截图): 顺序表: 第一题 Initially Seq: head -> 9 -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> null 第二题 找不到 6 第三题 insert "11" after "6": head -> 9 -> 8 -> 7 -> 6 -> 11 -> 5 -> 4 -> 3 -> 2 -> 1 -> null insert"86"at"2":head -> 9 -> 8 -> 86 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> null 第四题 delete the number at "2":head -> 9 -> 8 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 ->null delete value "9": head -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> null

数据结构实验报告

数据结构实验报告 一.题目要求 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

东南大学电路实验实验报告

电路实验 实验报告 第二次实验 实验名称:弱电实验 院系:信息科学与工程学院专业:信息工程:学号: 实验时间:年月日

实验一:PocketLab的使用、电子元器件特性测试和基尔霍夫定理 一、仿真实验 1.电容伏安特性 实验电路: 图1-1 电容伏安特性实验电路 波形图:

图1-2 电容电压电流波形图 思考题: 请根据测试波形,读取电容上电压,电流摆幅,验证电容的伏安特性表达式。 解:()()mV wt wt U C cos 164cos 164-=+=π, ()mV wt wt U R sin 10002cos 1000=??? ? ? -=π,us T 500=; ()mA wt R U I I R R C sin 213.0== =∴,ππ 40002==T w ; 而()mA wt dt du C C sin 206.0= dt du C I C C ≈?且误差较小,即可验证电容的伏安特性表达式。 2.电感伏安特性 实验电路: 图1-3 电感伏安特性实验电路 波形图:

图1-4 电感电压电流波形图 思考题: 1.比较图1-2和1-4,理解电感、电容上电压电流之间的相位关系。对于电感而言,电压相位 超前 (超前or 滞后)电流相位;对于电容而言,电压相位 滞后 (超前or 滞后)电流相位。 2.请根据测试波形,读取电感上电压、电流摆幅,验证电感的伏安特性表达式。 解:()mV wt U L cos 8.2=, ()mV wt wt U R sin 10002cos 1000=?? ? ?? -=π,us T 500=; ()mA wt R U I I R R L sin 213.0===∴,ππ 40002==T w ; 而()mV wt dt di L L cos 7.2= dt di L U L L ≈?且误差较小,即可验证电感的伏安特性表达式。 二、硬件实验 1.恒压源特性验证 表1-1 不同电阻负载时电压源输出电压 2.电容的伏安特性测量

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号: 2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 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始终指向生成的单链表的最后一个节点

数据结构实验报告模板

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);//重载赋

模式识别第二次上机实验报告

北京科技大学计算机与通信工程学院 模式分类第二次上机实验报告 姓名:XXXXXX 学号:00000000 班级:电信11 时间:2014-04-16

一、实验目的 1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等; 二、实验内容 2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为: label index1:value1 index2:value2 ... 其中对于分类来说label为类标识,指定数据的种类;对于回归来说label为目标值。(我主要要用到回归) Index是从1开始的自然数,value是每一维的特征值。 该过程可以自己使用excel或者编写程序来完成,也可以使用网络上的FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明: 先将数据按照下列格式存放(注意label放最后面): value1 value2 label value1 value2 label 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏执行行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。将该数据存放到文本文件中进行下一步的处理。 3.对数据进行归一化。 该过程要用到libsvm软件包中的svm-scale.exe Svm-scale用法: 用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。缩放规则文件可以用文本浏览器打开,看到其格式为: y lower upper min max x lower upper index1 min1 max1 index2 min2 max2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为: (Value-lower)*(max-min)/(upper - lower)+lower 其中value为归一化后的值,其他参数与前面介绍的相同。 建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。 4.训练数据,生成模型。 用法:svmtrain [options] training_set_file [model_file] 其中,options(操作参数):可用的选项即表示的涵义如下所示-s svm类型:设置SVM 类型,默

汇编实验报告2-1

《汇编语言程序设计》第二次上机2-1实验报告 院系:计算机科学与技术 专业:信息安全 班级:0903班 姓名: 学号: 时间:2011-6-6 地点:南一楼808

一、实验目的 (3) 二、题目与实验要求 (3) 三、寄存器分配和变量定义说明: (3) 四、流程图 (5) 五、源程序及注释 (7) 六、实验步骤 (13) 七、实验记录 (13) 八、体会 (16)

一、实验目的 1、加深对一些常用的汇编指令的理解; 2、加深对常用DOS功能调用指令的理解; 3、进一步熟悉TD的使用。 二、题目与实验要求 1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。 要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。 (2)请事先指出依次执行每条程序指令后(AX)的内容。 (3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。 (4)记录上机执行后与(2)、(3) 中对应的内容。 2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。 要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。 (2)请事先画出数据段中数据的存储形式。 (3)请事先指出依次执行每条程序指令后相应寄存器中的内容。 (4)请事先给出各调指令在汇编后的形式。 (5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。 不一致的应分析错误原因。 3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。 要求:(1)请事先指出程序运行结束后,显示器显示的内容。 (2)若将NUM的定义改成如下形式: NUM DB 35 显示的结果是什么? (3)若将NUM的定义改成如下形式: NUM DB 59 显示的结果是什么? (4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。 4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。 要求:(1) 使用10号功能调用输入字符串; (2) 使用9号功能调用输出提示信息; 提示:先比较长度是否相等。 5 选做题 输入一个无符号的数字串,然后以16进制形式显示出串的值。 例如: INPUT A NUMBER : 59 RESULT : 3BH 其中下划线上的内容(59)为程序运行时输入的串。 三、寄存器分配和变量定义说明:

数据结构实验报告模板(验证型)

学期:2010-2011学年第一学期指导教师:杨华莉成绩: 实验一顺序表的基本操作 一、实验目的 1.掌握使用VC++6.0调试程序的基本方法; 2.掌握线性表的顺序存储结构的类型定义; 3.掌握顺序表的基本操作的实现,如:插入、删除、遍历、查找、排序、修改、合并等; 4.掌握顺序表的应用。 二、实验要求 1.认真阅读和掌握本实验的示例程序。 2.上机运行示例程序,打印出程序的运行结果,并作必要的说明。 3.对示例程序,按照对线性表的操作需要,在程序中至少添加2个顺序表的相关操作。如: i.查找并显示分数在区间[a,b)的学生信息; ii.查找并显示最高分或最低分学生信息; iii.统计不及格或及格人数及所占比例; iv.将信息表按学号、姓名或分数升序或降序排列; v.按学号顺序进行数据元素的插入; vi.删除指定学号或姓名的学生信息; vii.修改某个学生的信息; viii.其它。 4.重新改写主函数(要求必需调用自己添加的操作),打印出文件清单(自己添加的函数、修改后的主函数和运行结果)。 5.对修改后的程序,分析每一个算法(函数)的时间复杂度。 6.根据上述要求撰写实验报告,并简要给出算法设计小结和心得。 三、实验环境 1.台式计算机每人一台; 2.软件:Visual C++6.0 四、实验内容和实验结果

一.示例程序运行结果及说明

二.自己添加的新函数(至少2个),要求加必要的注释。 SqList Delete_SqList(SqList &L)//删除学生信息 { Elemtype x; int i=0; int choice=DMenu(); char name[25]; int num,k; if(!L.length) { printf("表为空,无法删除!"); exit(0); } switch(choice) { case 1: //按姓名删除 printf("\n请输入要删除的学生的姓名\n"); scanf("%s",&name); k=strcmp(name,L.data[i].name);//比较姓名 if(k==0) { x=L.data[i-1]; for(int m=L.length-1;m>=i-1;--m) L.data[i-1]=L.data[i]; --L.length; break; } case 2: //按学号删除 printf("\n请输入要删除学生的学号\n"); scanf("%d",&num); if(num==L.data[i].num) { for(int m=L.length-1;m>=i-1;--m) L.data[i-1]=L.data[i]; --L.length; break; } case 3:break; } return L;

第二次实验报告0907022044

IK2011——2012学年第二学期 合肥学院数理系 实验报告 课程名称:运筹学 实验项目:求解整数线性规划问题 实验类别:综合性□设计性□验证性□√ 专业班级:数学与应用数学(2)班 姓名:杨涛学号: 0907022044 实验地点:数理系机房 实验时间: 4.18 指导教师:管梅成绩:

一.实验目的 学会用LINGO 软件求解整数规划问题。 二.实验内容 1、某班有男同学30人,女同学20人,星期天准备去植树。根据经验,一天中,男同学平均每人挖坑20个,或栽树30棵,或给25棵树浇水,女同学平均每人挖坑10个,或栽树20棵,或给15棵树浇水。问应怎样安排,才能使植树(包括挖坑、栽树、浇水)最多。建立该问题的数学模型,并求其解。 2、求解线性规划: 3、在高校篮球联赛中,我校男子篮球队要从8名队员中选择平均身高最高的出 同时,要求出场阵容满足以下条件: ⑴ 中锋最多只能上场一个。 ⑵ 至少有一名后卫 。 ⑶ 如果1号队员和4号队员都上场,则6号队员不能出场 ⑷ 2号队员和6号队员必须保留一个不出场。 问应当选择哪5名队员上场,才能使出场队员平均身高最高? 试写出上述问题的数学模型,并求解。 121212212max z x 2x 2x 5x 12x 2x 8s.t.0x 10x ,x Z =++≥??+≤?? ≤≤??∈?

三. 模型建立 1.设x1个男生挖坑,x2个男生栽树,x3个男生浇水,y1个女生挖坑y2个女生栽树y3个女生浇水,则: 1234126 781462612345678max z (1.92x 1.90 1.88 1.86 1.85x x 1 1 2s.t.1 5x (1,2,...,8)i x x x x x x x x x x x x x x x x x x x x i Z =+++++≤??++≥??++≤?? +=??+++++++=?=∈?? 3.设x1表示1号队员,x2表示2号队员,x3表示3号队员,x4表示4号队员 x5表示5号队员,x6表示6号队员,x7表示7号队员,x8表示8号队员,则: 12345678126781462612345678max z (1.92x 1.90 1.88 1.86 1.85 1.83 1.80 1.78)/5x x 112s.t.1 5x (1,2,...,8)i x x x x x x x x x x x x x x x x x x x x x x x i Z =++++++++≤??++≥??++≤?? +=??+++++++=?=∈?? 四. 模型求解(含经调试后正确的源程序)

计算机汇编上机实验报告

实验报告 1 二、实验题目:顺序程序设计 三、实验类型:必做 四、实验目的: 1.了解汇编语言的程序结构。 2.理解汇编语言中由源程序文件到可执行文件的过程。 五、实验内容和步骤: 1、实验内容: 编程实现:当X=5时,求Y=3X4+5X3+6X2+4X+2. 2、实验步骤: (1)首先对a1.asm进行汇编连接生成a1.exe文件。 (2)进行DEBUG程序并装入要调试的程序a1.exe。 如:DEBUG a1.exe;进入DEBUG并装配a1.exe (3)反汇编,确定每条指令的地址。 -U ;从当前地址进行反汇编 -U200;从CS:200处开始反汇编 反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令 (4)G命令来设置断点。 -G120 此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。 (5)观察数据段的内容,即观察内存的内容 -D DS:0000;从数据段的0单元开始显示128个字节。 -D DS:00000001;从数据段的0单元、1单元显示2个字节。 (6)退出DEBUG命令 -Q 六、实验结果: 145A:001E 83C002 ADD AX,+02 -u 145A:0021 A30100 MOV [0001],AX 145A:0024 B44C MOV AH,4C 145A:0026 CD21 INT 21 145A:0028 7509 JNZ 0033 145A:002A E83F26 CALL 266C 145A:002D 8946E8 MOV [BP-18],AX 145A:0030 E80D97 CALL 9740 145A:0033 F6065C3601 TEST BYTE PTR [365C],01 145A:0038 7405 JZ 003F

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

西工大高频第二次实验报告

实验二调幅接收系统实验 一、实验目的和内容: 图2为实验中的调幅接收系统结构图(虚框部分为实验重点,低噪放电路下次实验实现,本振信号由信号源产生。)。通过实验了解和掌握调幅接收系统,了解和掌握三极管混频器电路、中频放大/AGC电路、检波电路。 图2 调幅接收系统结构图 二、实验原理: 1、晶体管混频电路: 给出原理图,并分析其工作原理。 原理:混频电路将高频载波信号或已调波信号经过滤波、放大,将其频率变换为固定频率的信号且该高频滤波信号的频谱内部结构和调制类型保持不变,仅仅改变其频率。 2、中频放大/AGC和检波电路: 给出原理图,并分析其工作原理。 原理:中频输入信号通过中放电路放大中频信号,抑制干扰信号,连接AGC电路实现自动增益控制,接着连接二极管检波电路和低通滤波器,从中取出调制信号。 3、调幅接收系统: 给出系统框图,并简述其工作原理。 检波 低噪放混频 中放 /AGC 本振

工作原理:天线接收信号通过滤波器滤波然后低噪放放大幅度,晶体振荡器振荡出所需的本振信号,让本振信号和其进行混频然后滤波,AGC对其进行放大,输出稳定值,再进行滤波并解调检波,经过功率放大器输出。 三、实验步骤: 1、晶体管混频电路: 1)先调整静态工作点,测量2R4两端电压,调节2W1,使2R4两端电压为0; 2)在V2-5输入10.455MHz,250mV的本振信号,在V2-1输入10MHz、30mV的单载波信号,在V2-3处观测,调节2C3和2B1的大小,改变中频输出,当输出为455KHz的最大不失真稳定正弦波时,完成调试并记录此时的中频输出峰峰值。 3)改变基极偏置电阻2W1,使2R4端电压分别为0.5,1,1.5,2,2.5,3V,重复上述步骤2),记录下不同静态工作点下的中频输出的峰峰值,并计算混频增益,完成表2-1. 2、中频放大/AGC和检波电路: 1)调节直流静态工作点:闭合开关K3,电路仅接入12v直流电压,调节可调电阻3W1、3W2,为使静态电流不超过1mA,应使3R7,3R13两端电压为0.5V,0.033V。 2)调节交流工作:第一,调节函数发生器产生频率455KHZ的标准正弦信号,接入3K1。将示波器接于V3-2。 第二,调节可调电容3C4,使输出波形幅度最大不失真。 第三,将示波器加于V3-4,调节可调电容3C7,使输出波形最大不失真。 3)测试动态范围:开关3K2断开,开关3K3闭合。调节输入信号Vi幅值,使其分别为10,20…100,200mv…1V,示波器分别接到V3-2、V3-4、V3-5,,将分别测得的波形峰峰值记入表2-2,即分别为V01,V02,Vc,同时用示波器接V3-6处记录电压值(即AGC检波输出电压)。 4)检波失真观测:第一,输入信号455KHz、10mVpp,调制1KHz信号,调制度50%调幅信号,将示波器接到V3-6处即可观察到正常无失真的波形输出并记录;第二,增大直流负载电阻3W4,观察示波器直到观测到失真波形,即为对角线失真,记录波形;第三,再次调整3W4使波形正常不失真,减小交流电阻即闭合3K4,观察示波器输出波形产生负峰切割失真,记录波形。 3、调幅接收系统: 1、晶体管混频电路:1)2K1接入调制频率1KHz正弦波,载波频率10MHz,幅度为30mVp-p ,调制度50%的调幅波信号。 2)2K3接入本振信号10.455MHz,250mVp-p的正弦信号,将示波器接在V2-3处观察波形,记录参数、波形。 2、中频放大电路3K1打至中频输入端。 3K2、3K4断开,3K3闭合,,将示波器接到V3-6观察检波输出的波形,调节3W4,使其达到最大不失真波形,记录波形。 3、测试系统性能:1)灵敏度。不断减小输入调幅波信号的幅值,同时观察检波输出波形,使示波器波形出现明显失真的输入幅值为该系统的最小可接收幅值。 四、测试指标和测试波形: 3.1.晶体管混频电路:

汇编实验报告

汇编语言程序设计 实验报告 学号:100511530 班级:电气信息类1005 姓名:陆淑琴 指导老师:李诗高

实验一、汇编语言上机的基本过程及环境 【实验目的】 (1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。 (2)了解汇编语言的程序结构。 【实验内容】 (1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。 (2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。 源代码: DA TA SEGMENT val1 DW 1000h val2 DW 2000h maxv DW ? DA TA ENDS STACK SEGMENT STACK 'STACK'

DB 100H DUP(?) STACK ENDS CODE SEGMENT 'CODE' ASSUME CS:CODE, DS:DATA,SS:STACK .386 MAIN: MOV AX, DATA; MOV DS, AX PUSH val1 PUSH val2 CALL MAX ; POP maxv ;栈顶返回值出栈 MOV AX, 4c00H INT 21H MAX PROC PUSH BP ;执行该指令前堆栈情况 MOV BP, SP ;执行后堆栈情况 MOV AX, [BP+4] CMP AX, [BP+6] JA EXIT MOV AX, [BP+6] EXIT: MOV [BP+6], AX ;用栈顶返回值 POP BP RET 2 ;执行后堆栈情况 MAX ENDP CODE ENDS END MAIN 【实验步骤】 (1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。

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

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;

相关文档