文档库 最新最全的文档下载
当前位置:文档库 › 顺序表的建立与插入的实验报告

顺序表的建立与插入的实验报告

顺序表的建立与插入的实验报告
顺序表的建立与插入的实验报告

顺序表的建立与插入

实验目的:

1、掌握c中赋值语句的使用

2、掌握结构体的建立

3、了解如何在线性表中建立和插入

实验类容与步骤:

1、建立一个顺序表,含有n个数据元素。

2、输出顺序表及顺序表的长度。

3、完成在第i个结点之前插入数据e的操作。

实验平台:

Windows xp 操作系统,VC 6.0集成环境

实验设计方案:

1)定义顺序表的数据类型

2)建立含有n个数据元素的顺序表,即设计构造函数;

3)对建立的顺序表设计插入基本操作的算法。

源程序代码:

#include

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW 0

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

typedef struct

{

int *elem;

int length;

int listsize;

} SqList;

int InitList_Sq (SqList *L)

{

(*L).elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));

if(!(*L).elem)

exit(OVERFLOW);

(*L).length=0;

(*L).listsize=LIST_INIT_SIZE;

return OK;

}

int CreateList_Sq(SqList* L)

{

int i;

printf("Input the datas:");

for(i=0;i<(*L).length;i++)

scanf("%d",&(*L).elem[i]);

return OK;

}

int ListInsert_Sq(SqList *L,int i,int e)

{

int *p,*q,*newbase;

if((i<1)||(i>(*L).length+1))

return ERROR;

if((*L).length>=(*L).listsize)

{

newbase=(int *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(int)); if(!newbase)

exit(OVERFLOW);

(*L).elem=newbase;

(*L).listsize+=LISTINCREMENT;

}

q=&(*L).elem[i-1];

for(p=&(*L).elem[(*L).length-1];p>=q;--p)

*(p+1)= *p;

*q=e;

(*L).length++;

return OK;

}

void main()

{

int i,n,e;

SqList L;

InitList_Sq(&L);

printf("\nInput the length of the list L:");

scanf("%d",&n);

L.length=n;

CreateList_Sq(&L);

printf("Input the insert data:");

scanf("%d",&e);

printf("Input the insert location:");

scanf("%d",&i);

if(ListInsert_Sq(&L,i,e))

{

printf("output the datas:");

for(i=0;i

printf("%d",L.elem[i]);

printf("\n");

}

else

printf("Can't insert the data!");

}

实验结果及分析:

Input the length of the list L:6

Input the datas:1 7 4 5 8 2

Input the insert data:9

Input the insert location:4

Output the datas:1 7 4 9 5 8 2

万用表的安装实验报告

电路分析课程设计报告设计题目:万用表原理与安装 专业 班级 学号 学生姓名 指导教师 设计时间 教师评分 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 {

§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、通过两个表笔将多用电表与小灯泡联,读出小灯泡中通过的电流为安。 实验心得:

1.C语言顺序表实验报告

实验报告要求 一、实验目的 二、实验内容 三、程序流程图 四、实验结果(要求检测所有情况的正确性,写出测试条件及相应的测试结果) 五、完成思考题 实验一顺序表的基本操作(2学时) 一、实验目的 了解顺序表的逻辑特征,掌握顺序表的描述方法、特点及有关的概念,掌握顺序表上的插入和删除等基本操作算法。 二、实验内容 在顺序表List []中,实现顺序表的基本操作,包括:初始化顺序表,在表中插入元素、删除元素。 基本要求: (1)顺序表的元素个数可随意设定; (2)可连续测试任意多个元素的插入、删除,(插 入、删除位置及要插入元素数值均从键盘输入); (3)任一操作结束后将顺序表中的内容输出; (4)可由用户选择退出程序。 三、实验要点及说明 顺序表又称为线性表的顺序存储结构,它是用一组地址连续的存储单元依次存放线性表的各个元素。 可按如下格式定义顺序表: #define MAXLEN 50 /* 定义顺序表最大元素个数50 */ typedef struct{ datatype List[MAXLEN];/* 定义顺序表List */ int Num; /* 定义顺序表表长*/ }Seqlist; 模块划分:(1)initiq( )函数:初始化顺序表 (2)insertq( )函数:实现插入功能 (3)deleteq( )函数:实现删除功能 (4)print( )函数:实现输出功能 四、参考源程序 #include #define MAXLEN 50 typedef int datatype; typedef struct{ datatype List[MAXLEN]; int Num; }Seqlist; void initiq(Seqlist *la ); int insertq(Seqlist *la,int n);

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

北京邮电大学电信工程学院 数据结构实验报告 实验名称:实验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++;

实验报告一顺序表的操作

《数据结构》实验报告一 系别:班级: 学号:姓名: 日期:指导教师: 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 从键盘输入10个整数,产生顺序表,并输入结点值。 从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。 从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。 从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。二、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 三、源程序及注释:

#include <> /*顺序表的定义:*/ #define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/ typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct { DataType data[ListSize]; /*向量data用于存放表结点*/ int length; /*当前的表长度*/ }SeqList; /*子函数的声明*/ void CreateList(SeqList * L,int n); /*创建顺序表函数*/ int LocateList(SeqList L,DataType x); /*查找顺序表*/ void InsertList(SeqList * L,DataType x,int i); /*在顺序表中插入结点x*/ void DeleteList(SeqList * L,int i);/*在顺序表中删除第i个结点*/ void PrintList(SeqList L,int n); /*打印顺序表中前n个结点*/ void main() { SeqList L; int n=10,x,i; /*欲建立的顺序表长度*/ =0;

线性表实验报告

一.实验名称 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、掌握使用VC++上机调试顺序表的基本方法; 2、掌握顺序表的基本操作:建立、插入、删除等运算。 二、实验仪器 安装VC++软件的计算机。 三、实验原理 利用线性表的特性以及顺序存储结构特点对线性表进行相关的基本操作四、实验内容 程序中演示了顺序表的创建、插入和删除。 程序如下: #include #include /*顺序表的定义:*/ #define ListSize 100 typedef struct { int data[ListSize]; /*向量data用于存放表结点*/ i nt length; /*当前的表长度*/ }SeqList; void main() { void CreateList(SeqList *L,int n); v oid PrintList(SeqList *L,int n); i nt LocateList(SeqList *L,int x); v oid InsertList(SeqList *L,int x,int i); v oid DeleteList(SeqList *L,int i); SeqList L;

i nt i,x; i nt n=10; L.length=0; c lrscr(); C reateList(&L,n); /*建立顺序表*/ P rintList(&L,n); /*打印建立后的顺序表*/ p rintf("INPUT THE RESEARCH ELEMENT"); s canf("%d",&x); i=LocateList(&L,x); p rintf("the research position is %d\n",i); /*顺序表查找*/ p rintf("input the position of insert:\n"); s canf("%d",&i); p rintf("input the value of insert\n"); s canf("%d",&x); I nsertList(&L,x,i); /*顺序表插入*/ P rintList(&L,n); /*打印插入后的顺序表*/ p rintf("input the position of delete\n"); s canf("%d",&i); D eleteList(&L,i); /*顺序表删除*/ P rintList(&L,n); /*打印删除后的顺序表*/ g etchar(); } /*顺序表的建立:*/ void CreateList(SeqList *L,int n) {int i; printf("please input n numbers\n"); for(i=1;i<=n;i++) scanf("%d",&L->data[i]); L->length=n;

数据结构线性表实验报告

实验报告 实验一线性表 实验目的: 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.探索黑箱内的电学元件

顺序表实验报告

嘉应学院计算机学院 实验报告 课程名称数据结构实验名称线性表实验地点锡科405 指导老师巫喜红实验时间第2-3周提交时间第3周 班级1303班姓名魏振辉学号131110108 一、实验目的和要求 编写一个程序algo2-1.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。 实验环境:Windows xp Visual C++6.0 三、实验过程描述 (详见本文件夹) 四、结果分析 运行结果如下图所示: 初始化线性表,先定义一个变量num,用while循环配合switch语句的使用来达到在未选择退出即num不等

时一直提示操作的效果,每执行一次操都会先运行fflush(stdin)函数来清除缓存区,避免下次操作受到干扰; 1、往线性表里插入元素,位置和元素用空格隔开; 2、查询线性表是否为空 3、输出顺序表 4、查询线性表长度

5、查询某位置的元素。执行查询操作时先用if语句判断查询元素的函数LocateElem(L,e)返回的值来执行不的操作,当返回的值为0时则所查元素不在线性表中; 6、查询木元素的位置。用if语句判断是否正确输入; 7、删除某元素。 8、释放顺序表 9、退出。用if语句每次执行操作时都判断一次指令是否正确。 五、实验总结

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

实验一:线性表的基本操作 【实验目的】 学习掌握线性表的顺序存储结构、链式存储结构的设计与操作。对顺序表建立、插入、删除的基本操作,对单链表建立、插入、删除的基本操作算法。 【实验内容】 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?会使用多用电表测量 _______ 、电流和 _______ 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

顺序表的查找、插入与删除实验报告

《数据结构》实验报告一 学院:班级: 学号:姓名: 日期:程序名 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个整数,产生顺序表,并输入结点值。 2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找 不到,则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出顺序表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 二、源程序及注释: #include #include /*顺序表的定义:*/ #include #define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/ typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct { DataType data[ListSize]; /*向量data用于存放表结点*/ int length; /*当前的表长度*/ }SeqList; void main() { SeqList L; int i,x; int n=10; /*欲建立的顺序表长度*/ L.length=0; void CreateList(SeqList *L,int n); void PrintList(SeqList L,int n); int LocateList(SeqList L,DataType x); void InsertList(SeqList *L,DataType x,int i); void DeleteList(SeqList *L,int i);

实验报告二:线性表及其基本操作实验(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;

万用表实验报告

物理实验报告 姓名:杜伟胜班级桌号日期成绩一、实验项目:万用 表的使用二、实验目的:掌握万用表的使用方法三、实验仪器: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)测试时采用跳跃接法,即在用表笔接触测量点的同时,注视电表指针偏转情况,随 时准备在出现不正常现象时使表笔离开测量点。

顺序表的应用数据结构实验报告记录

顺序表的应用数据结构实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

大学数据结构实验报告 课程名称数据结构实验第(三)次实验实验名称顺序表的应用 学生姓名于歌专业班级学号 实验成绩指导老师(签名)日期2018年9月30日一、实验目的 1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。 2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。 3.掌握对多函数程序的输入、编辑、调试和运行过程。 二、实验要求 1.预习C语言中结构体的定义与基本操作方法。 2.对顺序表的每个基本操作用单独的函数实现。 3.编写完整程序完成下面的实验内容并上机运行。 4.整理并上交实验报告。 三、实验内容: 1.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息 (2)逐个显示学生表中所有学生的相关信息 (3)根据姓名进行查找,返回此学生的学号和成绩 (4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩) (5)给定一个学生信息,插入到表中指定的位置 (6)删除指定位置的学生记录 (7)统计表中学生个数 四、实验设计 1.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息 for(count=0; count

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

实验一:线性表逆置(顺序表)实验报告 (一)问题的描述: 实现顺序表的逆置算法 (二)数据结构的设计: 顺序表是线性表的顺序存储形式,因此设计如下数据类型表示线性表: 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. (四)具体程序的实现

顺序表的建立及其基本操作技巧

山东师范大学 实验报告 课程:数据结构班级:2016级通信2班实验序号: 1 姓名:韩明达 学号: 201611030230 实验日期:9.17 题目: 顺序表的建立和运算 一、实验目的和要求 (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握线性表的顺序存储结构的定义及基本运算 二、实验环境 Windows10,Visual Studio 2017 三、实验内容及实施 实验内容 1、建立一个顺序表,输入n个元素并输出; 2、查找线性表中的最大元素并输出; 3、在线性表的第i个元素前插入一个正整数x; 4、删除线性表中的第j个元素; 5、将线性表中的元素按升序排列; 【程序流程图】

【程序】 #include #include using namespace std; #define MAXSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct { //定义顺序表结构 int data[MAXSIZE]; //存储空间的基地址; int length; //当前表长 }SqList; int InitList(SqList &L) //初始化顺序表 { L.length = 0; //当前长度为0 return OK; } void ShowList(SqList &L) //显示顺序表 { cout << "您构建的顺序表为:" << endl; //提示int i; for (i = 0; i < L.length; i++) { cout << L.data[i] << " ";

数据结构实验报告-顺序表的创建、遍历及有序合并操作

数据结构实验报告-顺序表的创建、遍历及有序合并操作二、实验内容与步骤 实现顺序表的创建、遍历及有序合并操作,基本数据结构定义如下: typedef int ElemType; #define MAXSIZE 100 #define FALSE 0 #define TRUE 1 typedef struct {ElemType data[MAXSIZE]; int length; }seqlist; 创建顺序表,遍历顺序表 #include #include #define MAXSIZE 100 #define Icreament 20 #define FALSE 0

#define TRUE 1 typedef int ElemType; //用户自定义数据元素类型 // 顺序表结构体的定义 typedef struct { ElemType *elem; //顺序表的基地址 int length; //顺序表的当前长度 int listsize; //预设空间容量 }SqList; //线性表的顺序存储结构 SqList* InitList() //创建空的顺序表 { SqList* L = (SqList*)malloc(sizeof(SqList));//定义顺序表L if(!L) { printf("空间划分失败,程序退出\n"); return NULL; } L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType)); if(!L->elem) { printf("空间划分失败,程序退出\n");

相关文档
相关文档 最新文档