实验一 顺序表的基本操作1

实验一 顺序表的基本操作1
实验一 顺序表的基本操作1

实验一:顺序表的基本操作

一、实验目的

1.掌握线性表的顺序存储结构的表示和实现方法。

2.掌握顺序表基本操作的算法实现。

3.了解顺序表的应用。

二、实验环境

硬件环境要求:

PC 机(单机)

使用的软件名称、版本号以及模块:

Visual C++ 6.0 或 Turbo C 或 Win-TC 等。

三、实验内容

编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为 char),并在此基础上设计一个主程序完成如下功能:

(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、用 Visual C++ 6.0 或 Turbo C 或 Win-TC 工具创建文件或程序,输

入代码后,进行编译运行或在控制台执行。

2、观看程序运行结果,并根据结果进行思考,对程序进行修改和总

结。

3、请在实验报告上写上实验要求、规范的程序代码、运行结果和你的

总结体会。

【核心算法提示】

1.顺序表插入操作的基本步骤:要在顺序表中的第 i 个数据元素之

前插入一个数据元素 x,首先要判断插入位置 i 是否合法,假设线性表的

表长为 n,则 i 的合法值范围:1≤i≤n+1,若是合法位置,就再判断顺序

表是否满,如果满,则增加空间或结束操作,如果不满,则将第 i 个数

据元素及其之后的所有数据元素都后移一个位置,此时第 i 个位置已经

腾空,再将待插入的数据元素 x 插入到该位置上,最后将线性表的表长

增加 1。

2.顺序表删除操作的基本步骤:要删除顺序表中的第 i 个数据元素,首先仍然要判断i 的合法性,i 的合法范围是1≤i≤n,若是合法位置,则将第i 个数据元素之后的所有数据元素都前移一个位置,最后将线性表的表长减 1。

3.顺序表查找操作的基本步骤:要在顺序表中查找一个给定值的数据元素,则可以采用顺序查找的方法,从顺序表中第1 个数据元素开始依次将数据元素值与给定值进行比较,若相等则返回该数据元素在顺序表中的位置,否则返回 0 值。

【核心算法描述】

线性表的动态分配顺序存储结构—

C语言实现

#define MaxSize 50 //存储空间的分配量

Typedef char ElemType;

Typedef struct{

ElemType data[MaxSize];

int length; //表长度(表中有多少个元素)

}SqList;

动态创建一个空顺序表的算法

void InitList(SqList *&L) //初始

化线性表

{

L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间

L->length=0; //置空线性表长度为 0

}

线性表的插入:

status Sqlist_insert(Sqlist &L,int i,Elemtype x)

/*在顺序表 L 中第 i 个元素前插入新元素 x*/ { if (i<1||i>L.length+1) return ERROR; /*插入位置不正确则出错*/

if (L.length>=MAXLEN) return OVERFLOW;

/*顺序表 L 中已放满元素,再做插入操作则溢出*/ for(j=L.length-1;j>=i-1;j--)

L.elem[j+1]=L.elem[j];/*将第 i 个元素及后续元素位置向后

移一位*/

L.elem[i-1]=x; /*在第 i 个元素位置处插入新元素 x*/

L.length++; /*顺序表 L 的长度加 1*/

return OK;

}

线性表的删除:

status Sqlist_delete(Sqlist &L,int

i,Elemtype &e) /*在顺序

表 L 中删除第 i 个元素

*/

{ if (i<1||i>L.length)return ERROR; /*删除位置不正确则出错*/

for(j=i;j<=L.length-1;j++)

L.elem[j-1]=L.elem[j]; /*将第 i+1 个元素及后继元素位置向前移一位*/ L.length--; /*顺序表 L 的长度减 1*/

return OK;

}

线性表元素的查找:

int LocateElem(SqList *L, ElemType e) //按元素值查找

{

int i=0;

while (ilength && L->data[i]!=e)

i++; //查找元素 e

if (i>=L->length) //未找到时返回 0

return 0;

else

return i+1; //找到后返回其逻辑序号

}

输出线性表:

void DispList(SqList *L) //输出线性表

{

int i;

if (ListEmpty(L))

return; for (i=0;i

>length;i++)

printf("%c ",L-

>data[i]); printf("\n");

}

输出线性表第 i 个元素的值:

bool GetElem(SqList *L,int i,ElemType &e) //求线性表中某个数据元素值{

if (i<1 || i>L->length)

return false; //参数错误时返回 false

e=L->data[i-1]; //取元素值

return true; //成功找到元素时返回 true

}

规范的程序代码;

#include

#define MAXLEN 30

typedef struct {

int elem[MAXLEN];

int length; }Sqlist;

void Create(Sqlist &L)//创建 {

int n,i=0;

printf("请输入线性表元素个数(小于30)\n");

while(scanf("%d",&n)&&n>30||n<0)

{

printf("数据不合法,请重新输入\n");

}

printf("请输入%d个数,用空格分开\n",n);

while(n--) {

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

}

}

void Show(Sqlist L)//显示

{

printf("当前顺序表中元素有:\t");

for(int i=0;i

{

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

}

printf("\n"); } int Insert(Sqlist &L,int i,int x)//插入 {

int key=1; if (i<1||i>L.length+1)

{ printf("插入位置不正确\n");

key=0; return key;

}

for(int j=L.length-1;j>=i-1;j--)

L.elem[j+1]=L.elem[j];

L.elem[i-1]=x;

L.length++; return key;

}

int Delete(Sqlist &L,int i)//删除

{

int key=1;

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

{

printf("删除位置不正确\n");

key=0; return key;

}

for(int j=i;j<=L.length-1;j++)

L.elem[j-1]=L.elem[j];

L.length--; return key;

}

int Search(Sqlist L,int e)//查找

{

int i,key=1;

for (i=0;i

if (i

for(;i

if(e==L.elem[i]) printf("第%d",i+1);

printf("的位置\n");

return key;

}

else {printf("查找失败\n");

key=0;return key;

}

}

void DelSqlist(Sqlist &L)//去重

{

int i,j,temp;

for (j=0;j

for (i=0;i

{ if(L.elem[i]>L.elem[i+1])

{ temp=L.elem[i];

L.elem[i]=L.elem[i+1];

M.elem[i+1]=temp;

}

}

i=0; while(i

if (L.elem[i]==L.elem[i+1])

{

for (j=i+1;j

L.elem[j-1]=L.elem[j]; L.length--;

}

else i++;

}

int main() {

int i,x,e,slect,key;

Sqlist L;

length=0; Create(L);

Show(L);

printf("请选择操作:\t 1.插入元素\t2.删除元素\t3.查找元素\t4.删除重复元素\n"); while(~scanf("%d",&slect))

{

key=0;

switch (slect) {

case 1:if (L.length>=MAXLEN) {

printf("顺序表中已放满元素,无法插入新元素\n");

break;}

while(key==0){

printf("请输入要插到的位置和元素值\n");

scanf("%d%d",&i,&x); key=Insert(L,i,x);

Show(L);

}

break;

case 2:while(key==0){

printf("请输入要删除的位置\n");

scanf("%d",&i);

key=Delete(L,i); Show(L);

}break;

case 3: while(key==0){

printf("请输入要查找的元素\n");

scanf("%d",&e); key=Search(L,e);

}

break;

case 4:DelSqlist(L);

Show(L);

break;

default:

printf("输入错误,请重新输入\n"); break; } printf("请选择操作:\t 1.插入\t2.删除\t3.查找\t4.删除重复元素\n"); } }

运行结果:

总结体会

1.考虑问题要全面,尽可能增强程序的健壮性;

2.将程序模块化,能使其更加可读、易找错、易修改;

3.函数和变量的命名要能一眼看出来它的意思;

4.错误很多,调试很烦,要有耐心。

实验一.顺序表验证实验

线性表 实验一顺序表操作验证 1. 实验目的 ⑴掌握线性表的顺序存储结构; ⑵验证顺序表及其基本操作的实现; ⑶掌握数据结构及算法的程序实现的基本方法。 2. 实验内容 ⑴建立含有若干个元素的顺序表; ⑵对已建立的顺序表实现插入、删除、查找等基本操作。 3. 实现提示 首先定义顺序表的数据类型——顺序表类SeqList,包括题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。 const int MaxSize=10; template //定义模板类SeqList class SeqList { public: SeqList( ){length=0;} //无参构造函数 SeqList(T a[ ], int n);//有参构造函数 void Insert(int i, T x); //在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素 int Locate(T x ); //按值查找,求线性表中值为x的元素序号 void PrintList( ); //遍历线性表,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 }; 其次,建立含有n个数据元素的顺序表,即设计构造函数。算法如下: 最后,对建立的顺序表设计插入、删除、查找等基本操作的算法。

顺序表 ⑴插入算法 ⑵删除算法 ⑶查找算法

线性表班级:_________ 学号:_____________ 姓名:___________ 成绩:_________ 实验一顺序表操作验证 一、实验目的 二、实验内容 三、设计与编码 a)本实验用到的理论知识 实验用到的理论知识,实现理论与实践相结合。总结尽量简明扼要,并与本次实验密切相关。 b)算法设计 对本次实验内容设计c++类定义,设计算法完成每个成员函数。 c)编码 将算法转化为c++程序,设计主函数完成对各成员函数的调用。 四、运行与调试 a)在调试程序的过程中遇到什么问题,是如何解决的? b)设计了哪些设计数据?测试结果是什么? c)程序运行的结果如何? 五、实验小结 说明:1.实验报告用A4纸打印。 2.实验标题用黑体小三加粗。 3.每节标题用黑体小四加粗。 4.正文用宋体五号字。

实验基本操作复习专题

化学实验基本操作专题复习 复习重点: 了解常用的化学实验仪器的名称、用途以及使用注意事项。掌握一些重要的实验基本操作。常见的仪器如试管、滴管、酒精灯、烧杯、量筒、集气瓶、漏斗、长颈漏斗、托盘天平、玻璃棒等;重要的实验基本操作如固体、液体药品的取用,酒精灯的使用与加热,溶液的配制,装置气密性的检查,溶解、过滤、蒸发等分离或提纯物质、溶液酸碱性的测定的实验操作方法等。 复习难点: 仪器的用途归纳、实验原因分析、实验现象描述 复习过程 考点知识梳理 一、基本实验操作 二、常见仪器的用途 合作归纳:玻璃棒的用途 集气瓶的用途 烧杯的用途 三、基本实验操作分析 1)请指出并改正下列实验操作描述中的错误之处 A.将10g氯化钠固体直接放在天平的托盘上称量 B.量取90ml水时,俯视读数 C.为了准确,可以在量筒中配制溶液 D.稀释浓硫酸时,将水缓慢注入浓硫酸中 E.为了节约药品,用剩的药品应放回原试剂瓶 F.为了获得感性认识,可触摸药品或尝药品的味道 G.为了能看到标签,倾倒液体时,标签不能向着手心 2)请指出并改正下列实验操作描述中的错误之处 1.测定溶液酸碱性时,为使现象更明显,加入的指示剂越多越好 2.检验铵盐和碱共热时有无氨气放出,应用干燥的红色石蕊试纸检验 3.为了便于观察,给试管加热时,试管口应对着自己 4.用pH试纸测定溶液酸碱度时,先将pH试纸润湿,然后再测定

5.滴管伸入试管可以准确地把液体滴入试管 6. 选用量程为50mL的量筒量取8mL液体 7.搅拌过滤器内的液体可以加快过滤速度 四、常见反应的实验现象 五、实验安全和意外事故的处理 六、中考模拟演练 1、1)下列有关实验现象的描述中正确的是(多选,用字母作答) A. 红磷在氧气中燃烧发出耀眼的白光,并产生大量的白雾 B. 细铁丝在氧气中燃烧火星四射,生成红色固体 C. 打开浓盐酸的试剂瓶盖,一会儿瓶口会产生白烟 D. 某同学在做一氧化碳还原氧化铁的实验过程中,观察到试管中红棕色粉末逐渐变黑 E.向硫酸铜溶液中滴加氢氧化钠溶液有蓝色沉淀产生 2)请从下列A或B中两题中任选一个 ....作答,若两题均作答。 、(1)下列因素会导致配制的氯化钠溶液的溶质质量分数偏小的是(多选,用字母作答) A.称取的氯化钠不干燥 B.量水时俯视刻度 C.用来的溶解的烧杯内壁有水 D.用玻璃棒搅拌时有液体溅出 E.转移已配好溶液时有液体洒出 (2)请从下列甲乙两两题中任选一题作答。

实验一 顺序表操作实现

实验一顺序表操作实现 实验日期:2017 年 3 月 6 日 实验目的及要求 1. 熟练掌握线性表的基本操作在顺序存储上的实现; 2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3. 掌握线性表的顺序存储结构的定义和基本操作的实现; 4. 通过本实验加深对C语言的使用(特别是函数调用的参数传递、指针类型的应用)。实验内容 已知程序文件seqlist.cpp已给出学生身高信息顺序表的类型定义和基本运算函数定义。 (1)顺序表类型定义 typedef struct { int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ } datatype; typedef struct{ datatype data[MAX]; /*存放顺序表元素的数组*/ int last; /*表示data中实际存放元素个数*/ }Seqlist; (2)基本运算函数原型 void initList(Seqlist *lp);/*置一个空表*/ void createList(Seqlist *lp);/*建一个学生顺序表*/ void sort_xh(Seqlist *lp);/*按学号排序*/ void Error(char *s);/*自定义错误处理函数*/ void pntList(Seqlist *lp);/*输出学生表*/ void save(Seqlist *lp,char strname[]);/*保存学生顺序表到指定文件*/

任务一 创建程序文件seqlist.cpp,其代码如下所示,理解顺序表类型Seqlist和基本运算函数后回答下列问题。 /*seqlist.cpp程序文件代码*/ #include #include #define MAX 50 typedef struct { int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ } datatype; typedef struct{ datatype data[MAX]; /*存放顺序表元素的数组*/ int last; /*表示data中实际存放元素个数*/ }Seqlist; void initList(Seqlist *lp);/*置一个空表*/ void createList(Seqlist *lp);/*建一个学生顺序表*/ void sort_xh(Seqlist *lp);/*按学号排序*/ void Error(char *s);/*自定义错误处理函数*/ void pntList(Seqlist *lp);/*输出学生表*/ void save(Seqlist *lp,char strname[]);/*保存学生顺序表到指定文件*/ /*置一个空表*/ void initList(Seqlist *lp) { lp->last=0; } /*建一个学生顺序表*/ void createList(Seqlist *lp) { FILE *fp; int xh ,sex; float sg; if((fp=fopen("records.txt","r"))==NULL) { Error("can not open file !"); } while(!feof(fp)) { fscanf(fp,"%d%f%d",&xh,&sg,&sex); lp->data[lp->last].xh=xh; lp->data[lp->last].sg=sg; lp->data[lp->last].sex=sex; lp->last++; } fclose(fp);

(完整版)初中化学实验基本操作练习题

化学实验基本操作同步练习 一、选择题 1、对化学实验剩余的药品,处理方法正确的是() A.带回家中 B.随意倾倒在水槽中 C.倒入指定的容器中 D.倒回原试剂瓶中 2、下列仪器中,不能在酒精灯上直接加热的是() A.试管 B.烧杯 C.蒸发皿 D.燃烧匙 3、下列仪器中,不能作为反应容器的是() A.烧杯 B.集气瓶 C.量筒 D.试管 4、下列仪器中,可与试管、烧杯、蒸发皿归为一类的是() A.集气瓶 B.漏斗 C.量筒 D.锥形瓶 5、下列基本操作中不正确的是() A.用酒精灯火焰的外焰部分给物质加热 B.过滤时,液体应沿着玻璃棒流入过滤器 C.一般用药匙或镊子取用固体药品 D.使用天平时,用手取用砝码 6、给试管里的物质加热时,切勿让试管底部接触灯芯,这是因为() A.将使酒精燃烧不完全 B.易使酒精灯熄灭 C.灯芯温度低,易使已受热后的试管受热不均匀而破裂 D.灯芯温度高,易使试管底部溶化 7、下列基本实验操作正确的是() A.用药品不定量时,固体一般去1~2克 B.安装过滤器时,滤纸边缘高于漏斗口 C.蒸发食盐水,用玻璃棒不断搅拌液体 D.酒精灯不用的时候,一定要盖上灯帽 8、下列实验操作,不正确的是() A. 向试管里倾倒液体试剂时,试剂瓶标签应朝向手心 B. 实验剩余的药品必须放回原瓶 C. 取液后的滴管,放置时应保持橡胶乳头在上 D. 用量筒量取液体时,视线要与量筒内凹液面的最低处保持水平 9、下列仪器中,能在酒精灯火焰上直接加热的是() A. 集气瓶 B. 量筒 C. 试管 D. 烧杯

10、用量筒量取液体时,某同学操作如下:量筒放平稳,面对刻度,仰视液体凹液面最低处,读数为19mL。倾倒出一部分液体,又俯视液体凹液面最低处,读数为11mL。这位同学取出液体的体积是() A. 8mL B. 大于8mL C. 小于8mL D. 无法判断 11、下列说法中正确的是() A. 可以用燃着的酒精灯去点燃另一个酒精灯 B. 实验室可以用品尝味道的方法鉴别一些无毒性的试剂 C. 实验过程中,不慎将稀硫酸溅到衣服上,可以不作处理 D. 不小心将酒精灯碰倒在实验台上,致使酒精溢出燃烧,可以立即用湿抹布盖灭 12、下列实验操作①用量筒量取液体时,将量筒放在水平的桌面上,右手握试剂瓶(标签向掌心)慢慢倒入量筒中②用完滴瓶上的滴管要用水冲洗后放回滴瓶中③实验室里两个失去标签的试剂瓶中均装有白色固体,为了分清哪瓶是白砂糖,哪瓶是食盐,可取少量固体品尝味道。其中()A. 只有①正确 B. 只有②正确 C. 只有③正确 D. 全部错误 13、下列化学实验基本操作正确的是() A. 取块状固体药品时,如果没有镊子可以用手拿 B. 应该用酒精灯的外焰给物质加热 C. 有腐蚀性的药品应放在纸上称量 D. 用胶头滴管滴加液体时,其下端应紧贴试管内壁 14、用托盘天平称量3.6克食盐,称量中发现指针向右偏转,此时应() A. 加砝码 B. 加药品 C. 减药品 D. 调节螺丝向左旋 15、量取8毫升稀硫酸应选用的仪器是() A. 50毫升量筒 B. 50毫升量筒和胶头滴管 C. 10毫升量筒 D. 10毫升量筒和胶头滴管 16、下列各组仪器,能用来加热液体药品的一组是() A. 量筒、蒸发皿、烧杯 B. 量筒、蒸发皿、试管 C. 集气瓶、蒸发皿、试管 D. 烧杯、蒸发皿、试管 17、在进行过滤操作时,除了使用铁架台、烧杯、玻璃棒以外,还需要的仪器是() A. 酒精灯 B. 托盘天平 C. 蒸发皿 D. 漏斗

实验报告一顺序表的操作

《数据结构》实验报告一 系别:班级: 学号:姓名: 日期:指导教师: 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 从键盘输入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顺序表和链表基本操作(给学生)

实验一、二:线性表的应用 班级学号姓名 一、实验预备知识 1 复习C++中编写函数的相关内容。 2 复习如何用主函数将多个函数连在一起构成一个C++完整程序。 二、实验目的 1 掌握线性表的顺序和链式存储结构 2 熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算 3 熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算 三、实验要求 1 编写初始化并创建线性表和输出线性表的算法。 2 编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。 3 编写一个主函数,将上面函数连在一起,构成一个完整的程序。 4将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。 四、实验步骤 顺序表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.初始化并建立顺序表。 3.编写顺序表输出算法。(内存中开辟的单元数为8) 4.依次插入3,21,15三个数,分别插入在第4,6和2位置,每插入一次都要输出一次顺序表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次顺序表。 单链表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.建立一个带表头结点的单链表(前插入法和尾插入法都可以)。 3.编写单链表输出算法。 4.依次插入3,21,15三个数,分别插入在第4,6和12位置,每插入一次都要输出一次单链表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次单链表。 五、实验结果 1.给出程序清单及输入/输出结果。 2.实验过程中遇到的问题、解决方法及心得体会。

顺序表实验报告

《数据结构》实验报告一 系别:嵌入式系统工程系班级:嵌入式11003班 学号:11160400314 姓名:xxx 日期:2012年4月9日指导教师XX 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个整数,产生顺序表,并输入结点值。 2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找 不到,则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出顺序表所有结点值,观察输出结果。 4.从键盘输入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; /*欲建立的顺序表长度*/ L.length=0; /*调用创建线性表函数*/ printf(“create function:\n”); CreateList(&L,n); /*建立顺序表*/ PrintList(L,n); /*打印顺序表*/ /*调用查找函数*/ printf(“search function:\n”); printf("input the data you want to search:"); scanf("%d",&x); i=LocateList(L,x); /*顺序表查找*/ if (i==0) printf("sorry,don't find %d!\n\n",x); else printf("i have find the %d,it locate in %d!\n\n",x,i); /*调用插入函数*/ printf(“Insert function:\n”); printf("输入要插入的位置:(input the position:)"); scanf("%d",&i); printf("输入要插入的元素:(input the data:)"); scanf("%d",&x); InsertList(&L,x,i); /*顺序表插入 */ PrintList(L,n); /*打印顺序表 */ /*调用删除函数*/ printf(“delete function:\n”); printf("输入要删除的位置:(input the position:)"); scanf("%d",&i); DeleteList(&L,i); /*顺序表删除 */ PrintList(L,n); /*打印顺序表 */

实验1顺序表和链表基本操作(学生)

实验一线性表运算的实现 班级学号姓名 一、实验预备知识 1.复习C中函数的相关内容。 2.复习如何用主函数将多个函数连在一起构成一个C完整程序。 3.复习多文件结构。 二、实验目的 1.掌握线性表的顺序和链式存储结构 2.熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算 3.熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算 三、实验要求 1.编写初始化并创建线性表和输出线性表的算法。 2.编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。 3.编写有序表的插入和删除运算算法。 4.编写一个主函数,将上面函数连在一起,构成一个完整的程序。 5.将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。 四、实验内容 顺序表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.初始化并建立顺序表。(开辟的存储空间大小为8) 3.编写顺序表输出算法。 4.依次插入3,21,15三个数,分别插入在第4,6和2位置,每插入一次都要输出一次顺序表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次顺序表。 6.编写一个排序算法,对线性表中元素从小到大排列。 7.向有序表分别插入20和50,插入后表仍然有序。(修改开辟的存储空间大小为15) 单链表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.建立一个带表头结点的单链表(前插入法和尾插入法都可以)。 3.编写单链表输出算法。 4.依次插入3,21,15三个数,分别插入在第4,6和12位置,每插入一次都要输出一次单链表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次单链表。 6.编写一个排序算法,对线性表中元素从小到大排列。 7.分别删除值为25和42的元素,删除后表仍然有序。 五、实验结果 给出程序清单及输入/输出结果 六、总结 1.实验过程中遇到的问题及解决方法 2.收获

数据结构- 顺序表的基本操作的实现-课程设计-实验报告

顺序表的基本操作的实现 一、实验目的 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常见仪器的识别及用途 1. (2019苏州)下列仪器对应的名称正确的是() 2. (2019淄博改编)下列化学仪器对应的名称书写正确的是() 3. (2019株洲)取用粉末状固体化学药品时,应使用的仪器是() A. 滴管 B. 研钵 C. 药匙 D. 镊子 4. (2019德州)下面是实验室常见的玻璃仪器,其中能够在酒精灯上直接加热的是() 5. (2019益阳)实验室中,药品的存放必须符合一定的规则。下列存放药品时所选择的仪器及存放方式正确的是() 6. (2019贵阳)化学是一门以实验为基础的科学。下列仪器用途不正确的是() 7. (2019牡丹江改编)如图为实验室中常见的仪器,请回答相关问题。 (1)写出下列仪器的名称:②________,②________,②________。

(2)量取一定体积的液体,需要用到的仪器是________(填序号)。 (3)②不能直接加热,加热时需要______________________。 (4)②的用途是______________________。 命题点2基本实验操作及注意事项 8. (2019南京)过滤实验中,不需要使用的仪器是() A. 烧杯 B. 漏斗 C. 玻璃棒 D. 蒸发皿 9. (2019德阳)下列实验基本操作正确的是() A. 用湿润的pH试纸测某待测液的pH B. 胶头滴管用后平放在桌面上 C. 在量筒中配制溶液 D. 一般用药匙或镊子取用固体药品 10. (2019铜仁改编)下列化学实验基本操作,正确的是() A. 加热后的试管立即用冷水冲洗 B. 蒸发食盐水时,待蒸发皿中固体全部析出时停止加热 C. 滴管使用后都要立即用清水冲洗干净 D. 将玻璃管插入带孔橡胶塞时要先把玻璃管口用水润湿 11. (2019河南)下列图示的实验操作中正确的是() 12. (2019陕西)下列实验基本操作正确的是() 13. (2019北京)下列操作不正确 ...的是() 14. (2019安徽改编)下列实验操作正确的是()

实验一.顺序表验证实验

实验一顺序表操作验证 一、实验目的 ⑴掌握线性表的顺序存储结构; ⑵验证顺序表及其基本操作的实现; ⑶掌握数据结构及算法的程序实现的基本方法。 二、实验内容 ⑴建立含有若干个元素的顺序表; ⑵对已建立的顺序表实现插入、删除、查找等基本操作。 三、设计与编码 (a)本实验用到的理论知识 首先定义顺序表的数据类型——顺序表类SeqList,包括题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。 (b)算法设计 const int MaxSize=10; template //定义模板类SeqList class SeqList { public: SeqList( ){length=0;} //无参构造函数 SeqList(T a[ ], int n);//有参构造函数 void Insert(int i, T x); //在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素 int Locate(T x ); //按值查找,求线性表中值为x的元素序号 void PrintList( ); //遍历线性表,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 }; 其次,建立含有n个数据元素的顺序表,即设计构造函数。算法如下:

最后,对建立的顺序表设计插入、删除、查找等基本操作的算法。 ⑴插入算法 ⑵删除算法 ⑶查找算法 (c)编码 #include #include using namespace std;

实验一顺序表与链表

实验一顺序表与链表 一、实验目的 1、掌握线性表中元素的前驱、后续的概念。 2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。 3、对线性表相应算法的时间复杂度进行分析。 4、理解顺序表、链表数据结构的特点(优缺点)。 二、实验预习 说明以下概念 1、线性表: 2、顺序表: 3、链表: 三、实验容和要求 1、阅读下面程序,在横线处填写函数的基本功能。并运行程序,写出结果。 #include #include #define ERROR 0 #define OK 1 #define INIT_SIZE 5 /*初始分配的顺序表长度*/ #define INCREM 5 /*溢出时,顺序表长度的增量*/ typedef int ElemType; /*定义表元素的类型*/ typedef struct Sqlist{ ElemType *slist; /*存储空间的基地址*/ int length; /*顺序表的当前长度*/ int listsize; /*当前分配的存储空间*/ }Sqlist; int InitList_sq(Sqlist *L); /* 构造一个空的线性表L*/ int CreateList_sq(Sqlist *L,int n); /* 构造顺序表的长度为n */ int ListInsert_sq(Sqlist *L,int i,ElemType e);/* 在L中第i个位置之前插入新的数据元素e,L的长度加1 */ int PrintList_sq(Sqlist *L); /*输出顺序表的元素*/ int ListDelete_sq(Sqlist *L,int i); /*删除第i个元素*/

顺序表实验报告

嘉应学院计算机学院 实验报告 课程名称数据结构实验名称线性表实验地点锡科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.下列实验操作中,正确的是() 2.量取8mL水稀释浓硫酸的下列操作错误的是() 3.下列实验操作中,正确的是() 4.下列各图是初中化学的几个实验操作,其中正确的是() 5.化学实验必须规范,否则容易发生安全事故。你认为下列实验操作正确的是() 6.下列图示实验操作错误的是() 7.学习化学,我们对商品的标签和标志有了更深层次的认识,以下四枚标志使用不恰当的是 ()

8.徐浩同学准备了下列仪器和用具:烧杯、铁架台、铁圈、石棉网、酒精灯、玻璃棒、蒸发皿、坩埚钳、火柴。从缺乏仪器或用具的角度看,他不能进行的实验操作是() A.溶解B.过滤C.蒸发D.给溶液加热 9.在实验室中有下列实验用品:①酒精灯、②铁架台、铁圈、石棉网、酒精灯、玻璃棒、蒸发皿、坩埚钳、火柴。从缺乏仪器或用具的角度看,他不能进行的实验操作项目是() A.溶解B.过滤C.蒸发D.给溶液加热 10.下列实验操作正确的是() 11.下列实验操作能达到预期目的的是() A.用10mL的量筒量取9.0mL的水 B.用托盘天平称取10.58克的碳酸钠粉末 C.用向下排空气法收集纯净的氢气 D.用150mL酒精和50mL水精确配制200m L医用消毒酒精 12.做溶解、过滤、蒸发实验均要用到的一种仪器是()A.试管B.烧杯C.酒精灯D.玻璃棒 13.配制10%的氯化钠溶液时,不会引起溶液中氯化钠的质量分数偏小的是() A.用量筒量取水时仰视读数B.配制溶液的烧杯用少量的蒸馏水润洗 C.氯化钠晶体不纯D.转移已配好的溶液时,有少量溶液溅出 14.“神舟7号”载人航天飞船发射成功,极大地增强了我们的民族自豪感。在航天飞船的失重环境中,下列实验操作最难完成的是()A.结晶B.蒸发C.溶解D.过滤 15.某学生用量筒量取液体,视线与液体凹液面的最低处保持相平,读数为30mL,将液体倒出一部分后,俯视读数为20mL,则该同学实际倒出的液体体积为() A.大于10m L B.小于10m L D.等于10m L D.无法确定 16.郝颖同学在化学课上提出,可用澄清石灰水检验人呼出的气体是否是二氧化碳气体,就这一过程而言,属于科学探究环节中的()A.建立假设B.收集证据C.设计实验D.作出结论 17.实验结束后,下列仪器的放置方法正确的是() 二、填空与简答题 18.在实验室中有下列实验用品:①酒精灯、②试管夹、③10mL量筒、④100mL量筒⑤烧杯、⑥漏斗、⑦蒸发皿、⑧玻璃棒、⑨铁架台(带铁圈)⑩滤纸,请按要求选择相应实验用品填空(填序号) (1)加热试管里的药品应使用; (2)量取5mL液体应使用; (3)过滤操作中应使用; (4)蒸发、结晶操作中应使用。

实验1 顺序表的操作

实验1 顺序表的操作 一、实验要求 1 建立顺序表 2 顺序表的长度并输出顺序表 3 插入元素的位置和元素 4 删除值为x的元素 5 顺序表倒置 6 将顺序表按升序排序 7 将两个顺序有序表A和B合并为一个有序表C 二、源代码 DS.h #include #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 typedef int Status; SqList.h #ifndef SQLIST_H_INCLUDED #define SQLIST_H_INCLUDED #include "DS.h" typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize; }SqList; void menu(); Status InitList_Sq(SqList &L, int n);/*初始化顺序表*/ Status CreateList_Sq(SqList &L);/*建立顺序表*/

void PrintList_Sq(SqList L);/*输出顺序表*/ Status DeleteList_Sq(SqList &L,int i,ElemType &e);/*删除第i个元素*/ Status DeleteListX_Sq(SqList &L,ElemType x);/*删除值为x的元素*/ Status AdjustList_Sq(SqList &L);/*奇数排在偶数之前*/ Status OrderList_sq(SqList &L, int n);/*插入法生成递增有序表*/ void MergeList_Sq(SqList La, SqList Lb, SqList &Lc );/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/ #endif // SQLIST_H_INCLUDED SqList.cpp #include "SqList.h" void menu() { printf("\t\t\t 顺序表基本操作\n\n"); printf("\t\t\t1.建立顺序表\n"); printf("\t\t\t2.遍历顺序表\n"); printf("\t\t\t3.删除第i 个元素\n"); printf("\t\t\t4.删除值为x 的元素\n"); printf("\t\t\t5.奇数排在偶数之前\n"); printf("\t\t\t6.插入法生成递增有序表\n"); printf("\t\t\t7.两个非递减有序表La和Lb合并成非递减有序表Lc\n"); printf("\t\t\t0.退出\n\n"); } /*初始化顺序表*/ Status InitList_Sq(SqList &L, int n) { L.elem=(ElemType*)malloc(n*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length=0; L.listsize=n; return OK; } /*建立顺序表*/ Status CreateList_Sq(SqList &L) { int n, i; printf("请输入顺序表长度:"); scanf("%d", &n); if(InitList_Sq(L, n)) {

数据结构实验1

天津科技大学 2015—2016学年第2学期数据结构实验任务书 课程名称:数据结构实验学时: 2 实验题目:线性表的基本操作 实验环境: Visual C++ 实验目的: 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 实验提示: 学生信息的定义: typedef struct { char no[8]; //8位学号 char name[20]; //姓名 int score; //成绩 }Student; 顺序表的定义 typedef struct { Student *elem; //指向数据元素的基地址 int length; //线性表的当前长度 }SqList; 链表的定义:

typedef struct LNode{ Student data; //数据域 struct LNode *next; //指针域 }LNode,*LinkList; 实验要求: (1) 程序要添加适当的注释,程序的书写要采用缩进格式。 (2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。 (3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。 (4) 根据实验报告模板详细书写实验报告,在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。 (5) 以班为单位实验周周五上传源程序和实验报告。顺序表的源程序保存为SqList.cpp,链表的源程序保存为LinkList.cpp,实验报告命名为:实验报告1.doc。源程序和实验报告压缩为一个文件(如果定义了头文件则一起压缩),按以下方式命名:学号姓名.rar,如07081211薛力.rar。

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

《数据结构》实验报告一 学院:班级: 学号:姓名: 日期:程序名 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 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);

相关文档
最新文档