线性表的建立与应用--实验报告

线性表的建立与应用--实验报告
线性表的建立与应用--实验报告

实验报告

课程名称数据结构实验

实验名称线性表的建立与应用

实验类型设计型

实验地点实验日期

指导教师杨崇

专业

班级

学号

姓名

成绩

辽宁石油化工大学计算机与通信工程学院

实验一

一 实验目的:通过实验,了解并掌握线性表逻辑特性和物理特性,了解并掌握队列和栈的运算方法,培养结合理论知识进行实际应用的实践能力。

二 实验内容:栈和队列的初始化及基本运算的实现,实现栈和队列的初始化、栈的入栈、退栈操作、队列的入队、退队运算,以及将退栈结果入队、退队结果入栈等基本操作。

三 实验原理:栈是限制在线性表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称为空栈。

出栈

入栈

栈的运算包括初始化、入栈、退栈、读取栈顶元素等。当栈为空的时候不允许退栈,当栈为满的时候不允许入栈。标识栈的特性的是四个变量:栈的首地址V,栈的容量m,栈顶指针Top。

栈的初始化:

void init-stack(s,m.top)

ET s; int m,*top;

{s=malloc(m*sizeof(ET));

*top=0;

return;

}

入栈运算

void push(s,m,top,x)

ET s[],x; int m,*top;

{ if {*top= =m} {printf(“stack overflow\n”);return;}

*top=*top+1;

s[*top-1]=x; return;

}

退栈运算

void pop(s,m.top,y)

ET s[],*y;int m,*top;

{ if (*top= =0) { printf(“stack underflow\n”);return;

y=s[*top-1];

*top=*top-1;

return;

}

读取栈顶元素

void top(s,m,top,y)

ET s[],*y;int m,*top;

{ if (*top = =0) {printf(“stack empty\n ”);return;}

y=s[*top-1];

return;}

插入在线性表的一端进行,而删除在表的另一端进行,我们将这种数据结构称为队或队列,把允许插入的一端叫队尾(rear) ,把允许删除的一端叫队头(front)。当队列中没有数据时,我们称这个时候的队列为空队

a1a2a3a4

a5入队

出队

队列示意图

队列也是一种运算受限制的线性表,它的运算包括:初始化队、入队、退队、读取队首和队尾的数据。当队列为空时不允许退队,当队列未满的时候不允许入队。

在实际应用中,通常使用循环队列

MZXSIZE -1

循环队列示意图

初始化循环队列

void init_queue(q,m,front,rear,s)

ET q;int m,*front,*rear,*s;

{ q=malloc(m*sizeof(ET));

*front=m;*rear=m;*s=0;

return;}

循环队列入队运算

vsid addcq(q,m,rear,front,s,x)

ET q[];int m,*front,*rear,*s;

{ if ((*s==1) && (*rear= =*front)){printf(“queue overflow\n”);return;} *rear=*rear+1;

if (*rear= =m+1) *rear=1;

q[*rear-1]=x;*s=1;return;}

循环队列退队运算

void delcq(q,m,rear,front,s,y)

ET q[],*y;int m,*front,*rear,*s;

{ if (*s= =0) {printf(“queue underflow \n”);return;}

*front=*front+1;

if (*front= =m+1) *front=1;

*y=q[front-1];

if(*front= =*rear) *s=0;

return;}

四、实验步骤:

1 进入Turbo C 2.0,新建一个文件。

2 输入程序,程序要求使用子函数进行组织。

3 将源程序保存到指定文件夹“D:\学生姓名”。

4 按F9调试,纠正语法错误。

5按Ctrl+F9运行,调试逻辑错误。

6 按Alt+F5查看结果。

五、实验截图:

六、程序源代码:

#include"math.h"

#include"stdlib.h"

#define nd struct node

struct node

{

int d;

struct node *next;

};

nd *create(head)

nd *head;

{

int d;

nd *p;

nd *q;

d=1;

head=(nd *)malloc(sizeof(nd));

head->next=NULL;

线性表实验报告

线性表实验报告 一、实验的目的要求 1、了解线性表的逻辑结构特性,以及这种结构特性在计算机内的两种存储结构。 2、掌握线性表的顺序存储结构的定义及其C语言实现。 3、掌握线性表的链式存储结构——单链表的定义及其C语言实现。 4、掌握线性表在顺序存储结构即顺序表中的各种基本操作。 5、掌握线性表在链式存储结构——单链表中的各种基本操作。 6、认真阅读和掌握实验的程序。 7、上机运行本程序。 8、保存和打印出程序的运行结果,并结合程序进行分析。 二、实验的主要内容 题目:请编制C语言,利用链式存储方式来实现线性表的创建、插入、删除和查找等操作。 具体地说,就是要根据键盘输入的数据建立一个单链表,并输出该单链表;然后根据屏幕 菜单的选择,可以进行数据的插入或删除,并在插入或删除数据后,再输出单链表;最后 在屏幕菜单中选择0,即可结束程序的运行。 三、解题思路分析 在链表中插入数据,不需要进行大量的数据移动,只需要找到插入点即可,可以采用后插入的算法,在插入点的后面添加结点。在链表中删除数据,先找到删除点,然后进行指针赋值操作。 四、程序清单 #include #include #include typedef int ElemType; typedef struct LNode {ElemType data; struct LNode *next; }LNode;

LNode *L; LNode *creat_L(); void out_L(LNode *L); void insert_L(LNode *L,int i,ElemType e); ElemType delete_L(LNode *L,ElemType e); int locat_L(LNode *L,ElemType e); void main() {int i,k,loc; ElemType e,x; char ch; do{printf("\n"); printf("\n 1.建立单链表"); printf("\n 2.插入元素"); printf("\n 3.删除元素"); printf("\n 4.查找元素"); printf("\n 0.结束程序运行"); printf("\n================================"); printf("\n 请输入您的选择(1,2,3,4,0)"); scanf("%d",&k); switch(k) {case 1:{L=creat_L(); out_L(L); }break; case 2:{printf("\n请输入插入位置:"); scanf("%d",&i); printf("\n请输入要插入元素的值:");

万用表的安装实验报告

电路分析课程设计报告设计题目:万用表原理与安装 专业 班级 学号 学生姓名 指导教师 设计时间 教师评分 2011年 6月 17日

目录 1.概述..................................... 错误!未定义书签。 1.1目的....................................................................... 错误!未定义书签。 1.2设计任务............................................................... 错误!未定义书签。 1..3课程设计要求..................................................... 错误!未定义书签。 2. 万用表的组装及焊接 (3) 2.1 MF47型万用表的工作原理框图 (3) 2.2 MF47万用表电阻档工作原理............................. 错误!未定义书签。 2.3 MF47型万用表的安装步骤 (4) 3.焊接前的准备工作 (5) 3.1清除元件表面的氧化层 (5) 3.2原件引脚的弯制成形 (5) 3.3焊接练习 (5) 3.4元器件的插放 (6) 4.元器件的焊接与注意事项 (6) 4.1元器件的焊接 (6) 4.2注意事项 (8) 5.焊接后的实物图 (9) 6.故障的排除 (10) 7.万用表的使用及注意事项 (11) 7.1万用表的使用 (11)

7.2注意事项............................................................... 错误!未定义书签。 8.总结 (12) 8.1 所遇到的问题,你是怎样解决这些问题的 (12) 8.2体会收获及建议 (12) 8.3参考资料 (12) 9.教师评语 (13) 10.成绩 (13)

C语言数据结构线性表的基本操作实验报告

实验一线性表的基本操作 一、实验目的与基本要求 1.掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。 2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。 3.掌握顺序表和链表的基本操作:插入、删除、查找以及表的合并等运算。4.掌握运用C语言上机调试线性表的基本方法。 二、实验条件 1.硬件:一台微机 2.软件:操作系统和C语言系统 三、实验方法 确定存储结构后,上机调试实现线性表的基本运算。 四、实验内容 1.建立顺序表,基本操作包括:初始化,建立一个顺序存储的链表,输出顺序表,判断是否为空,取表中第i个元素,定位函数(返回第一个与x相等的元素位置),插入,删除。 2.建立单链表,基本操作包括:初始化,建立一个链式存储的链表,输出顺序表,判断是否为空,取表中第i个元素,定位函数(返回第一个与x相等的元素位置),插入,删除。 3.假设有两个按数据元素值非递减有序排列的线性表A和B,均以顺序表作为存储结构。编写算法将A表和B表归并成一个按元素值非递增有序(允许值相同)排列的线性表C。(可以利用将B中元素插入A中,或新建C表)4.假设有两个按数据元素值非递减有序排列的线性表A和B,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C。 五、附源程序及算法程序流程图 1.源程序 (1)源程序(实验要求1和3) #include #include #include #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct arr {

数据结构实验一题目一线性表实验报告

北京邮电大学电信工程学院 数据结构实验报告 实验名称:实验1——线性表 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 1、实验目的:熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法 学习指针、模板类、异常处理的使用 掌握线性表的操作的实现方法 学习使用线性表解决实际问题的能力 2、实验内容: 题目1: 线性表的基本功能: 1、构造:使用头插法、尾插法两种方法 2、插入:要求建立的链表按照关键字从小到大有序 3、删除 4、查找 5、获取链表长度 6、销毁 7、其他:可自行定义 编写测试main()函数测试线性表的正确性。 2. 程序分析 2.1 存储结构 带头结点的单链表

2.2 关键算法分析 1.头插法 a、伪代码实现:在堆中建立新结点 将x写入到新结点的数据域 修改新结点的指针域 修改头结点的指针域,将新结点加入链表中b、代码实现: Linklist::Linklist(int a[],int n)//头插法 {front=new Node; front->next=NULL; for(int i=n-1;i>=0;i--) {Node*s=new Node; s->data=a[i]; s->next=front->next; front->next=s; } } 2、尾插法

a、伪代码实现:a.在堆中建立新结点 b.将a[i]写入到新结点的数据域 c.将新结点加入到链表中 d.修改修改尾指针 b、代码实现: Linklist::Linklist(int a[],int n,int m)//尾插法 {front=new Node; Node*r=front; for(int i=0;idata=a[i]; r->next=s; r=s; } r->next=NULL; } 时间复杂度:O(n) 3、按位查找 a、伪代码实现: 初始化工作指针p和计数器j,p指向第一个结点,j=1 循环以下操作,直到p为空或者j等于1 b1:p指向下一个结点 b2:j加1 若p为空,说明第i个元素不存在,抛出异常 否则,说明p指向的元素就是所查找的元素,返回元素地址 b、代码实现 Node* Linklist::Get(int i)//得到指向第i个数的指针 {Node*p=front->next; int j=1; while(p&&j!=i)//p非空且j不等于i,指针后移 {p=p->next; j++;

数据结构实验报告——线性表

实验报告:线性表的基本操作 实验1:实现顺序表各种基本运算的算法 一、实验目的 学会并运用顺序表存储结构及各种运算。 二、实验环境 VC++6.0 三、实验准备 (1) 复习课件中理论知识 (2)练习课堂所讲的例子 四、实验内容 编写一个程序实现SqList.cpp,实现顺序表基本运算,并在此基础上设计个主程序exp1.cpp,完成如下功能: (1)初始化顺序表L; (2)依次插入a、b、c、d、e元素; (3)输出顺序表L; (4)输出顺序表L长度; (5)判断顺序表L是否为空: (6)输出顺序表L的第3个元素; (7)输出元素a的位置; (8)在第4个位置上插入f元素; (9)输出顺序表L; (10)删除顺序表L的第3 个元素; (11)输出顺序表L; (12)顺序表L; 五、实验步骤 1、构造一个空的线形表并分配内存空间 Status InitList_Sql(SqList &L) {L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; } 2、求线性表的长度 Status ListLength(SqList L) { return L.length; } 3、线性表清空 void ClearList(SqList &L){ L.length = 0; } 4、在顺序线形表 L 中第 i 个位置之前插入新的元素 e Status ListInsert_Sq(SqList &L,int i,ElemType e)

§2.9 练习使用多用电表实验报告

9 实验报告:练习使用多用电表 班级 姓名 ★ 实验目的:学会使用多用电表测量电阻、二极管正负极、电压、电流 实验原理: 欧姆表:欧姆表由灵敏电流计表头、电池、变阻器改装而成,欧姆表内阻就是这三部分电阻的串联阻值,根据闭合电路欧姆定律: x g R R R r E I +++=)(0 电流I 与x R 有一一对应关系,就可测出不同的电阻。可画出其内部如图1所示: 多用电表:电流表和电压表都是由灵敏电流计表头改装来的, 所以欧姆表、电流表和电压表可以公用一个表头改装成一个多用电 表。可画出其内部结构如图2所示: 注意事项: 因为表头是多用的,而电流必须从其正接线柱流入,表内又有 电池,所以红表笔接的是表头的正接线柱,但却与电池负极相连, 而黑表笔与电池正极相连。 测电阻时,用的是表内的电池,待测电阻必须与电源断开;测电压和电流时,不用表内电池,多用电表必须按照电压表和电流表的接法接入电路。 实验过程: 1、测量定值电阻: 1、将多用电表的 、 表笔分别插入+、-插孔,选择开关旋至 (“Ω”)档。 2、试测一下桌面上的电阻,根据指针所指示的位置,判断目前所选的 是否合适,然后将选择开关调到合适的位置。 3、将两个表笔 在一起,调节 旋钮,直至指针指到 侧0位置。 4、测量电阻并读出数据。R= Ω 5、如果测量另一电阻时改变了量程,必须重新进行 。 图 1 图2

2、测量二极管的正反向电阻: 1、将多用电表选择开关调至档,并选择×10或×100的档位。 2、将两个表笔在一起,调节旋钮,直至指针指到侧0位置。 3、用右手像握筷子那样抓住两表笔,接触到左手拿的二极管两端的电极。 4、测量出二极管的电阻并读出数据。 R= Ω,说明现在连接黑表笔的是二极管的极。 5、将多用电表选择开关调至×100或×10的档位。并将二极管电极颠倒,重新测量。 R= Ω,说明现在连接黑表笔的是二极管的极。 3、测量小灯泡两端电压: 1、按照黑板上的电路图连接电池、开关、变阻器、小灯泡。 2、将多用电表选择开关调至档,为了安全先选择最大量程,试测以后再选择合适的量程。 3、通过两个表笔将多用电表与小灯泡联在一起,读出小灯泡两端电压为伏。 4、测量小灯泡中的电流: 1、将多用电表选择开关调至档,为了安全先选择最大量程,试测以后再选择合适的量程。 2、通过两个表笔将多用电表与小灯泡联在一起,读出小灯泡两端电压为伏。 3、通过两个表笔将多用电表与小灯泡联,读出小灯泡中通过的电流为安。 实验心得:

线性表逆置(顺序表)实验报告

实验一:线性表逆置(顺序表)实验报告 (一)问题的描述: 实现顺序表的逆置算法 (二)数据结构的设计: 顺序表是线性表的顺序存储形式,因此设计如下数据类型表示线性表: typedef struct { ElemType *elem; /* 存储空间基址*/ int length; /* 当前长度*/ int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */ }SqList; (三)函数功能、参数说明及概要设计: 1.函数Status InitList(SqList *L) 功能说明:实现顺序表L的初始化 算法设计:为顺序表分配一块大小为LIST_INIT_SIZE的储存空间 2.函数int ListLength(SqList L) 功能说明:返回顺序表L长度 算法设计:返回顺序表中的length变量 3.函数Status ListInsert(SqList *L,int i,ElemType e) 功能说明:将元素e插入到顺序表L中的第i个节点 算法设计:判断顺序表是否已满,已满则加空间,未满则继续,将元素e插入到第i个元素之前,并将后面的元素依次往后移 4.函数Status ListTraverse(SqList L,void(*vi)(ElemType*)) 功能说明:依次对L的每个数据元素调用函数vi() 算法设计:依次对L的每个数据元素调用函数vi() 5.函数void Exchange(SqList *L) 功能说明:实现顺序表L的逆置 算法设计:用for循环将顺序表L中的第i个元素依次与第(i+length)个元素交换6.函数void print(ElemType *c) 功能说明:打印元素c 算法设计:打印元素c 2. (四)具体程序的实现

数据结构线性表的应用实验报告

实验报告 课程名称____数据结构上机实验__________ 实验项目______线性表的应用____________实验仪器________PC机___________________ 系别_____电子信息与通信学院___ 专业________ ___ 班级/学号______ __ 学生姓名______ ___________ 实验日期_______________________ 成绩_______________________ 指导教师_______________________

实验一.线性表的应用 1.实验目的:掌握线性链表的存储、运算及应用。利用链 表实现一元多项式计算。 2.实验内容: 1)编写函数,实现用链表结构建立多项式; 2)编写函数,实现多项式的加法运算; 3)编写函数,实现多项式的显示; 4)测试:编写主函数,它定义并建立两个多项式,显示 两个多项式,然后将它们相加并显示结果。变换测试用的多项式,检查程序的执行结果。 选做内容:修改程序,选择实现以下功能: 5)多项式求值:编写一个函数,根据给定的x值计算并 返回多项式f(x)的值。测试该函数(从终端输入一个x的值,调用该函数并显示返回结果)。 6)多项式相减:编写一个函数,求两个多项式相减的多 项式。 7)多项式相乘:编写一个函数,求两个多项式的乘积多 项式。 3.算法说明: 1)多项式的建立、显示和相加算法见讲义。可修改显示 函数,使输出的多项式更符合表达规范。

2)多项式减法:同次项的系数相减(缺项的系数是0)。 例如a(x)=-5x2+2x+3,b(x)= -4x3+3x,则a(x)-b(x) =4x3-5x2-x+3。提示:a(x)-b(x) = a(x)+(-b(x))。 3)多项式乘法:两个多项式的相乘是“系数相乘,指数 相加”。算法思想是用一个多项式中的各项分别与另 一个多项式相乘,形成多个多项式,再将它们累加在 一起。例如,a(x)=-5x2+2x+3,b(x)=-4x3+3x,则 a(x)*b(x) = (-4x3)*(-5x2+2x+3)+(3x)*(-5x2+2x+3) = (20x5-8x4-12x3) + (-15x3+6x2+9x) = 20x5-8x4-27x3+6x2+9x。 4.实验步骤: 根据实验报告的要求,我对文件夹里的C文件进行了丰 富和修改,步骤如下: 链表结构建立多项式: typedef struct polynode { float coef; //系数 int exp; //指数 struct polynode *next; //下一结点指针 } PNode; 编写函数,实现多项式的加法运算; PNode * PolyAdd (PNode *f1, PNode *f2) //实现加法功能。

线性表实验报告

一.实验名称 1.线性表基本操作; 2.处理约瑟夫环问题 二.试验目的: 1.熟悉C语言的上机环境,掌握C语言的基本结构。 2.定义单链表的结点类型。 3.熟悉对单链表的一些基本操作和具体的函数定义。 4.通过单链表的定义掌握线性表的链式存储结构的特点。 5.熟悉对单链表的一些其它操作。 三.实验内容 1.编制一个演示单链表初始化、建立、遍历、求长度、查询、插入、删除等操作的程序。 2.编制一个能求解除约瑟夫环问题答案的程序。 实验一线性表表的基本操作问题描述: 1. 实现单链表的定义和基本操作。该程序包括单链表结构类型以及对单链表操作 的具体的函数定义 程序中的单链表(带头结点)结点为结构类型,结点值为整型。 /* 定义DataType为int类型*/ typedef int DataType; /* 单链表的结点类型*/ typedef struct LNode {DataType data; struct LNode *next; }LNode,*LinkedList; LinkedList LinkedListInit() //初始化单链表 void LinkedListClear(LinkedList L) //清空单链表 int LinkedListEmpty(LinkedList L)//检查单链表是否为空 void LinkedListTraverse(LinkedList L)//遍历单链表 int LinkedListLength(LinkedList L)//求单链表的长度 /* 从单链表表中查找元素*/ LinkedList LinkedListGet(LinkedList L,int i) /* 从单链表表中查找与给定元素值相同的元素在链表中的位置*/ int LinkedListLocate(LinkedList L, DataType x) void LinkedListInsert(LinkedList L,int i,DataType x) //向单链表中插入元素 /* 从单链表中删除元素*/ void LinkedListDel(LinkedList L,DataType x)

数据结构线性表实验报告

实验报告 实验一线性表 实验目的: 1.理解线性表的逻辑结构特性; 2.熟练掌握线性表的顺序存储结构的描述方法,以及在该存储结构下的基本操作;并能灵活运用; 3.熟练掌握线性表的链表存储结构的描述方法,以及在该存储结构下的基本操作;并能灵活运用; 4.掌握双向链表和循环链表的的描述方法,以及在该存储结构下的基本操作。 实验原理: 线性表顺序存储结构下的基本算法; 线性表链式存储结构下的基本算法; 实验内容: 2-21设计单循环链表,要求: (1)单循环链表抽象数据类型包括初始化操作、求数据元素个数操作、插入操作、删除操作、取消数据元素操作和判非空操作。 (2)设计一个测试主函数,实际运行验证所设计单循环链表的正确性。 2-22 .设计一个有序顺序表,要求: (1)有序顺序表的操作集合有如下操作:初始化、求数据元素个数、插入、删除和取数据元素。有序顺序表与顺序表的主要区别是:有序顺序表中的数据元素按数据元素值非递减有序。 (2)设计一个测试主函数,实际运行验证所设计有序顺序表的正确性。 (3)设计合并函数ListMerge(L1,L2,L3),功能是把有序顺序表L1和L2中的数据元素合并到L3,要求L3中的数据元素依然保持有序。并设计一个主函数,验证该合并函数的正确性。 程序代码: 2-21(1)头文件LinList.h如下: typedef struct node { DataType data; struct node *next; }SLNode; /*(1)初始化ListInitiate(SLNode * * head)*/ void ListInitiate(SLNode * * head) { /*如果有内存空间,申请头结点空间并使头指针head指向头结点*/ if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL)exit(1);

实验报告:练习使用多用电表

实验报告:练习使用多用电表 班级 姓名 学号 时间 等次 一、实验目的: 1.会使用多用电表测量 、电流和 2.会使用多用电表测量二极管的 ,并据此判断二极管的 。 3.会使用多用电表探索黑箱中的电学元件. 二、实验原理: 欧姆表:欧姆表由灵敏电流计表头、电池、变阻器改装而成,欧姆表内阻就是这三部分电阻的串联阻值,根据闭合电路欧姆定律:x g R R R r E I +++=)(0 电流I 与x R 有一一对应关系,就可测出不同的电阻。可画出其内部如图1所示: 多用电表:电流表和电压表都是由灵敏电流计表头改装来的,所以欧姆表、电流表和电压表可以公用一个表头改装成一个多用电表。 三实验器材: 多用电表、直流电源、开关、导线若干、小电珠、二极管、定值电阻.电学黑箱 四、实验步骤 1.观察多用电表的外形,认识选择开关的测量项目及量程. 2.检查电表的指针是否停在表盘刻度 端的零位置,若不指零,则可用小螺丝刀进行机械调 。 3.将 、 表笔分别插入“+”“-”插孔. 4.如图甲所示连好电路,将多用电表选择开关置于直流 挡,测小电珠两端的电压. 5.如图乙所示连好电路,将选择开关置于直流 挡,测量通过小电珠的电流. 6.利用多用电表的欧姆挡测三个定值电阻的阻值,比较测量值和真实值的误差. 7.研究二极管的单向导电性,利用多用电表的欧姆挡测二极管两个引线间的电阻,确定正负极. 8.探索黑箱内的电学元件.1.元件与现象 图1

五:实验过程: 1、测量小灯泡两端电压: ①按照甲电路图连接电池、开关、变阻器、小灯泡。 ②将多用电表选择开关调至档,为了安全先选择最大量程,试测以 后再选择合适的量程。 ③通过两个表笔将多用电表与小灯泡联在一起,读出小灯泡两端电压为伏。 2、测量小灯泡中的电流: ①将多用电表选择开关调至档,为了安全先选择最大量程,试测以后再选择合适的量程。 ②通过两个表笔将多用电表与小灯泡联在一起,读出小灯泡两端电压为伏。 ③通过两个表笔将多用电表与小灯泡联,读出小灯泡中通过的电流为安。 3.测量定值电阻: ①将多用电表的、表笔分别插入+、-插孔,选择开关旋至(“Ω”)档。 ②将两个表笔在一起,调节旋钮,直至指针指到侧0位置。 ③测量电阻并读出数据。R= Ω ④如果测量另一电阻时改变了量程,必须重新进行。 4、测量二极管的正反向电阻: ①将多用电表选择开关调至档,并选择×10或×100的档位。 ②将两个表笔在一起,调节旋钮,直至指针指到侧0位置。 ③用右手像握筷子那样抓住两表笔,接触到左手拿的二极管两端的电极。 ④测量出二极管的电阻并读出数据。 R= Ω,说明现在连接黑表笔的是二极管的极。 ⑤将多用电表选择开关调至×100或×10的档位。并将二极管电极颠倒,重新测量。 R= Ω,说明现在连接黑表笔的是二极管的极。 5.探索黑箱内的电学元件

线性表的基本操作实验报告

实验一:线性表的基本操作 【实验目的】 学习掌握线性表的顺序存储结构、链式存储结构的设计与操作。对顺序表建立、插入、删除的基本操作,对单链表建立、插入、删除的基本操作算法。 【实验内容】 1.顺序表的实践 1) 建立4个元素的顺序表s=sqlist[]={1,2,3,4,5},实现顺序表建立 的基本操作。 2) 在sqlist []={1,2,3,4,5}的元素4和5之间插入一个元素9,实现 顺序表插入的基本操作。 3) 在sqlist []={1,2,3,4,9,5}中删除指定位置(i=5)上的元素9, 实现顺序表的删除的基本操作。 2.单链表的实践 3.1) 建立一个包括头结点和4个结点的(5,4,2,1)的单链表,实现单链 表建立的基本操作。 2) 将该单链表的所有元素显示出来。 3) 在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插 入的基本操作。 4) 在一个包括头结点和5个结点的(5,4,3,2,1)的单链表的指定位置 (如i=2)删除一个结点,实现单链表删除的基本操作。 5) 实现单链表的求表长操作。 【实验步骤】 1.打开VC++。 2.建立工程:点File->New,选Project标签,在列表中选Win32 Console Application,再在右边的框里为工程起好名字,选好路径,点OK->finish。至此工程建立完毕。 3.创建源文件或头文件:点File->New,选File标签,在列表里选C++ Source File。给文件起好名字,选好路径,点OK。至此一个源文件就被添加到了刚创

建的工程之中。 4.写好代码 5.编译->链接->调试 1、#include "stdio.h" #include "malloc.h" #define OK 1 #define OVERFLOW -2 #define ERROR 0 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef int ElemType; typedef int Status; typedef struct { ElemType *elem; int length; int listsize; } SqList; Status InitList( SqList &L ) { int i,n; L.elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof (ElemType)); if (!L.elem) return(OVERFLOW); printf("输入元素的个数:"); scanf("%d",&n); printf("输入各元素的值:"); for(i=0;i

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include >验目的 掌握顺序栈的基本操作:初始化栈、判栈空否、入栈、出栈、取栈顶数据元素等运算以及程序实现方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 3.实验内容 利用栈的基本操作实现一个判断算术表达式中包含圆括号、方括号是否正确配对的程序。具体完成如下:

(1)定义栈的顺序存取结构。 (2)分别定义顺序栈的基本操作(初始化栈、判栈空否、入栈、出栈等)。 (3)定义一个函数用来判断算术表达式中包含圆括号、方括号是否正确配对。其中,括号配对共有四种情况:左右括号配对次序不正确;右括号多于左括号;左括号多于右括号;左右括号匹配正确。 (4)设计一个测试主函数进行测试。 (5)对程序的运行结果进行分析。 实验代码: #include < > #define MaxSize 100 typedef struct { int data[MaxSize]; int top; }SqStack;

实验报告:练习使用多用电表汇编

实验报告:练习使用多用电表 班级 ___________ 姓名 ________ 学号 ________ 时间 __________ 等次 ______________ 一、 实验目的: 1?会使用多用电表测量 _______ 、电流和 _______ 2?会使用多用电表测量二极管的 _______ ,并据此判断二极管的 _______ 3?会使用多用电表探索黑箱中的电学元件. 二、 实验原理: 欧姆表:欧姆表由灵敏电流计表头、电池、变阻器改装而成,欧姆表内阻就是这三部分电阻 可测出不同的电阻。可画出其内部如图 1所示: 多用电表:电流表和电压表都是由灵敏电流计表头改装来的,所以欧姆表、电流表和电压表 可以公用一个表头改装成一个多用电表。 三实验器材:多用电表、直流电源、开关、导线若干、小电珠、二极管、定值电阻?电学黑箱 四、实验步骤 1 ?观察多用电表的外形,认识选择开关的测量项目及量程. 2 ?检查电表的指针是否停在表盘刻度 _________ 端的零位置,若不指零,则可用小螺丝刀进行机械 调 ________ 。 3?将 ________ 、 ________ 表笔分别插入 牛” “”插孔. 4?如图甲所示连好电路,将多用电表选择开关置于直流 ____________ 挡,测小电珠两端的电压. 5?如图乙所示连好电路,将选择开关置于直流 ___________ 挡,测量通过小电珠的电流. 6?利用多用电表的欧姆挡测三个定值电阻的阻值,比较测量值和真实值的误差. 7?研究二极管的单向导电性,禾U 用多用电表的欧姆挡测二极管两个引线间的电阻,确定正负极. 判断兀件 应用挡位 现象 电源 电压挡 两接线柱正、反接时均无示数说明无电源 电阻 欧姆挡 两接线柱间正、反接时示数相同 二极管 欧姆挡 艮小,反接时示数很大 用克爪£ 训号任正接时示数 -- ! -- 许 F = 0?]―内舎电源 用欧姆表测鈕待测脚端电阻 更多精品文档亠o Rfg — r 反向尺—0?—|否 反向?一药]―|否— 反向R = E { 堤可能是 I 是 可能是 |是 短路.:极管 断路 _?极代 定值屯班 学习-----好资料 的串联阻值,根据闭合电路欧姆定律: E (r Rg Ro) Rx 电流I 与Rx 有一一对应关系, 图1

实验报告二:线性表及其基本操作实验(2学时)

实验报告 实验二线性表及其基本操作实验(2学时) 实验目的: (1) 熟练掌握线性表ADT和相关算法描述、基本程序实现结构; (2) 以线性表的基本操作为基础实现相应的程序; (3) 掌握线性表的顺序存储结构和动态存储结构之区分。 实验内容:(类C算法的程序实现,任选其一。具体要求参见教学实验大纲) (1)一元多项式运算的C语言程序实现(加法必做,其它选做); (2) 有序表的合并; (3)集合的并、交、补运算; (4)约瑟夫问题的求解。 注:存储结构可以选用静态数组、动态数组、静态链表或动态链表之一。对链表也可以采用循环链表(含单向或双向)。 实验准备: 1) 计算机设备;2) 程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。 实验步骤: 1.录入程序代码并进行调试和算法分析; 2.编写实验报告。 实验过程:(一元多项式的加法) 【算法描述】 定义两个指针qa和qb,分别指向多项式A和多项式B当前进行比较的某个结点,然后比较2个结点中的指数项,则有以下三种结果: 1、指针qa所指结点的指数值小于指针qb所指结点的指数值,则应摘取指针qa 所指的结点插入到“和多项式”链表当中去; 2、指针qa所指结点的指数值大于指针qb所指结点的指数值,则应摘取指针qb 所指的结点插入到“和多项式”链表当中去; 3、指针qa所指结点的指数值等于指针qb所指结点的指数值,则将两个结点的系数相加,若和数不等于零,则修改qa所指结点的系数值,同时释放qb所指结点。反之,从多项式A的链表删除相应结点,并释放指针qa和qb所指结点。【源程序】 #include #include typedef struct { float coef;

线性表的链式存储结构实验报告

实验报告 课程名称:数据结构与算法分析 实验名称:链表的实现与应用 实验日期:班级:数媒1401 姓名:范业嘉学号 08 一、实验目的 掌握线性表的链式存储结构设计与基本操作的实现。 二、实验内容与要求 ⑴定义线性表的链式存储表示; ⑵基于所设计的存储结构实现线性表的基本操作; ⑶编写一个主程序对所实现的线性表进行测试; ⑷线性表的应用:①设线性表L1和L2分别代表集合A和B,试设计算法求A和B的并集C,并用 线性表L3代表集合C;②(选做)设线性表L1和L2中的数据元素为整数,且均已按值非递减有序排列,试设计算法对L1和L2进行合并,用线性表L3保存合并结果,要求L3中的数据元素也按值非递减有序排列。 ⑸设计一个一元多项式计算器,要求能够:①输入并建立多项式;②输出多项式;③执行两个多项式相加;④执行两个多项式相减;⑤(选做)执行两个多项式相乘。 三、数据结构设计 1.按所用指针的类型、个数、方法等的不同,又可分为: 线性链表(单链表) 静态链表 循环链表 双向链表 双向循环链表 2.用一组任意的存储单元存储线性表中数据元素,用指针来表示数据元素间的逻辑关系。 四、算法设计 1.定义一个链表 void creatlist(Linklist &L,int n) { int i; Linklist p,s; L=(Linklist)malloc(sizeof(Lnode)); p=L; L->next=NULL; for(i=0;idata); s->next=NULL; p->next=s; p=s; }

万用表实验报告

物理实验报告 姓名:杜伟胜班级桌号日期成绩一、实验项目:万用 表的使用二、实验目的:掌握万用表的使用方法三、实验仪器:mf500-4 型万用表、直流稳压电源、滑线变阻器、标准电阻箱、电阻 板、暗盒子、伏特表、毫安表、单刀开关、双刀开关、导线7条、故障线2条。 四、实验内容步骤及实验记录: 1.用万用表测量交流电压、直流电流和电阻 (1)用交流电压档测量市电电压值(约220v); 将万用表置于交流250v档,调零。用表笔探测交流电源插座的插孔。手不可接触表笔金 属部分。 测量值为228v,在仪器工作允许范围。可以通过调节实验室的交流稳压电源到输出220v。 (2)用欧姆档测量电阻板上的电阻值,并指明所用档次的中值电阻值为多少?测量前 必须调零,并使电路不闭合、不通电。 c (3)按图1连接电路。电源电压取5伏,选 ubc、ucd、择合适的量程分别测出uab、ubd和u ad ,同时要记录测量量程及其 内阻;(灵敏度20kω/v) 图 1 (4)选择合适的量程测出回路中的电流i,并记录测量量程和内阻(50μa表头,内 阻r 2.用万用表检查和排除故障(用伏特计法) 按图2连接电路。其中电源电压e取5伏,电阻用电阻箱500欧左右。把检查过程记录 下来。 现象:毫安表没有示数,伏特表有示数,’’’’’’ab有电压,cd无电压,dc无电压,fd 无电压,’’’’’’fh无电压,fc有电压,cd有电压hf间有电压, ’’故知线ff为故障线,dd为故障线。 ’ 3.用万用表判断黑盒子内的元器件及其连接电路。元器件有干 电池(1.5v)、电容器、电阻、二极管中的四只 三、误差分析 1、 由图1电路的电压测量数据发现,实际测量值小于计算值,尤其是ucd。 电路,增加了电路总电阻,导致总电流的减小。电流接入误差计算如下: ?i/i测?ra/r等 故 3、 ?i?3.1/121?40?μa 实验中出现的问题及解决 四、注意事项 (1)测量前一定要根据被测量的种类、大小将转换开关拨至合适的位置;(2)执 表笔时,手不能接触任何金属部分; (3)测试时采用跳跃接法,即在用表笔接触测量点的同时,注视电表指针偏转情况,随 时准备在出现不正常现象时使表笔离开测量点。

完整版12信管实验报告(线性表基本操作)

管理学院信管专业12(1)班学号3112004734 姓名钟臻华协作者:无教师评定_________________ 实验题目线性表的基本操作 实验评分表

实验报告 一、实验目的与要求 1.本实验通过对线性表各种操作的算法设计,理解和掌握线性表的概 念、存储结构及操作要求,体会顺序和链式两种存储结构的特点; 2.根据操作的不同要求,选择合适的存储结构,设计并实现算法,对 算法进行时间复杂度分析,从而达到掌握数据结构的研究方法、算法设计和分析方法的目的。 二、实验内容 1.分别用顺序表、单链表、单循环链表实现约瑟夫问题的求解,并分 析基于不同存储结构算法的时间复杂度。如果采用顺序表实现时,每个元素出环并不执行删除操作,而将相应位置元素值设置为空,但计数时必须跳过值为空的元素,实现这种算法,并分析执行效率。 1.顺序表的不删除出环元素算法实现 public class Josephus3{ public Josephus3(int number,int start,int distance){//创建约瑟夫环并求解,参数指定环长度,起始位置,计数 //采用线性顺序表存储约瑟夫环的元素,元素类型是字符串,构造方法参数指定顺序表的容量 S eqList list=new SeqList(number); S tring a=new String("null"); f or(int i=0;i

万用表实验报告

物理实验报告 姓名:杜伟胜 班级 桌号 日期 成绩 一、实验项目:万用表的使用 二、实验目的:掌握万用表的使用方法 三、实验仪器:MF500-4 型万用表、直流稳压电源、滑线变阻器、标准电阻箱、电阻 板、暗盒子、伏特表、毫安表、单刀开关、双刀开关、导线7条、故障线2条。 四、实验内容步骤及实验记录: 1.用万用表测量交流电压、直流电流和电阻 (1) 用交流电压档测量市电电压值(约220V ); 将万用表置于交流250V 档,调零。用表笔探测交流电源插座的插孔。手不可接触表笔金属部分。 测量值为228V ,在仪器工作允许范围。可以通过调节实验室的交流稳压电源到输出220V 。 (2) 用欧姆档测量电阻板上的电阻值,并指明所用档次的中值电阻值为多少? 测量前必须调零,并使电路不闭合、不通电。 择合适的量程分别测出ab U 、bc U 、cd U 、bd U 和ad U ,同时要记录测量量程及其 内阻;(灵敏度20k Ω/V ) (4) 选择合适的量程测出回路中的电流I ,并记录测量量程和内阻(50μA 表头,内 图 1 c

阻r 2.用万用表检查和排除故障(用伏特计法) 按图2连接电路。其中电源电压E 取5伏,电阻用电阻箱500欧左右。把检查过程记录下来。 现象:毫安表没有示数,伏特表有示数,a ’b ’有电压,c ’d ’无电压,d ’c 无电压,fd ’无电压,f ’h ’无电压,f ’c ’有电压,c ’d 有电压h ’f 间有电压, 故知线ff ’为故障线,dd ’ 为故障线。 3.用万用表判断黑盒子内的元器件及其连接电路。元器件有干 电池(1.5V )、电容器、电阻、二极管中的四只 三、误差分析 1、 由图1电路的电压测量数据发现,实际测量值小于计算值,尤其是cd U 。 原因是:万用表接入电路,形成接入误差。其计算见下 2、 由图1电路的电流测量数据发现,实际测量值小于计算值,原因为:万用表接入

《数据结构》实验报告模板附实例实验一线性表的基本操作实现.doc

实验一线性表的基本操作实现及其应用 一、实验目的 1、熟练掌握线性表的基本操作在两种存储结构上的实现,其中以熟悉各种链表的操作为重点。 2、巩固高级语言程序设计方法与技术,会用线性链表解决简单的实际问题。 二、实验内容 √1、单链表的表示与操作实现( * ) 2、约瑟夫环问题 3、Dr.Kong的艺术品 三、实验要求 1、按照数据结构实验任务书,提前做好实验预习与准备工作。 2、加“*”题目必做,其他题目任选;多选者并且保质保量完成适当加分。 3、严格按照数据结构实验报告模板和规范,及时完成实验报告。 四、实验步骤 (说明:依据实验内容分别说明实验程序中用到的数据类型的定义、主程序的流程以及每个操作(成员函数)的伪码算法、函数实现、程序编码、调试与分析、总结、附流程图与主要代码) ㈠、数据结构与核心算法的设计描述 (程序中每个模块或函数应加注释,说明函数功能、入口及出口参数) 1、单链表的结点类型定义 /* 定义DataType为int类型*/ typedef int DataType; /* 单链表的结点类型*/ typedef struct LNode { DataType data; struct LNode *next; }LNode,*LinkedList; 2、初始化单链表 LinkedList LinkedListInit( )

{ // 每个模块或函数应加注释,说明函数功能、入口及出口参数} 3、清空单链表 void LinkedListClear(LinkedList L) {// 每个模块或函数应加注释,说明函数功能、入口及出口参数} 4、检查单链表是否为空 int LinkedListEmpty(LinkedList L) { …. } 5、遍历单链表 void LinkedListTraverse(LinkedList L) { …. } 6、求单链表的长度 int LinkedListLength(LinkedList L) { ….} 7、从单链表表中查找元素 LinkedList LinkedListGet(LinkedList L,int i) { //L是带头结点的链表的头指针,返回第i 个元素} 8、从单链表表中查找与给定元素值相同的元素在链表中的位置 LinkedList LinkedListLocate(LinkedList L, DataType x) { ……} 9、向单链表中插入元素 void LinkedListInsert(LinkedList L,int i,DataType x) { // L 为带头结点的单链表的头指针,本算法 // 在链表中第i 个结点之前插入新的元素x } 10、从单链表中删除元素 void LinkedListDel(LinkedList L,DataType x) { // 删除以L 为头指针的单链表中第i 个结点} 11、用尾插法建立单链表 LinkedList LinkedListCreat( ) { ……}

相关文档
最新文档