顺序表,链表总结实验报告

顺序表,链表总结实验报告
顺序表,链表总结实验报告

实验报告实验目的:学生管理系统(顺序表)

实验要求:

1.建表

2.求表长

3.插入

4.查找

5.删除

6.列表

7.退出

源程序:

#include

#include

#include

#define MaxSize 1000

typedef struct

{

char xh[40];

char xm[40];

int cj;

}DataType; //学生的结构

typedef struct {

DataType data[MaxSize]; //定义表的数据类型

int length; //数据元素分别放置在data[0]到data[length-1]当中

} SqList; //表的结构

void liebiao(SqList *L) //建立表格

{

int k,n;

char q;

printf("请输入,输入学生的个数:\n");

fflush(stdin);

scanf("%d",&n);

for(k=0;k<=n-1;k++)

{

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

scanf("%s",L->data[k].xh);

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

scanf("%s",L->data[k].xm);

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

scanf("%d",&L->data[k].cj);

}

L->length=n;

}

void qb(SqList *L) //全部输出

{

int k,w;

for(k=0;klength;k++)

{

w=k+1;

printf("第%d位学生:",w);

printf("%s %s %d\n",L->data[k].xh,L->data[k].xm,L->da ta[k].cj);

}

}

int cr(SqList *L,DataType *xs,int i) //插入信息

{

int j;

if(L->length==MaxSize)

{

printf("没有!");

return 0;

}

else if((i<0)||(i>L->length))

{

printf("程序溢出,不符合");

return 0;

}

else

{

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

{

strcpy(L->data[j+1].xh,L->data[j].xh);

strcpy(L->data[j+1].xm,L->data[j].xm);

L->data[j+1].cj=L->data[j].cj;

}

strcpy(L->data[i].xh,xs->xh);

strcpy(L->data[i].xm,xs->xm);

L->data[i].cj=xs->cj;

L->length=L->length+1;

}

return 0;

}

int cz(SqList *L) //查找信息

{

char xh[40];

char xm[40];

int cj;

int i=0,u;

printf(" 1、按学号查询 \n");

printf(" 1、按姓名查询 \n");

printf(" 1、按成绩查询 \n");

printf("请选择:");

fflush(stdin);

scanf("%d",&u);

if (u==1)

{

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

scanf("%s",xh);

for(i=0;ilength;i++)

{

if(strcmp(L->data[i].xh,xh)==0)

return i;

}

}

if (u==2)

{

printf("请输入要查找学生的姓名:");

scanf("%s",xm);

for(i=0;ilength;i++)

{

if(strcmp(L->data[i].xm,xm)==0)

return i;

}

}

if (u==3)

{

printf("请输入要查找学生的成绩:");

scanf("%s",cj);

for(i=0;ilength;i++)

{

if(L->data[i].cj,&cj)

return i;

}

}

return -1;//*如果没找到,返回-1

}

int cz2(SqList *L) //删除查找的函数

{

char xh[40];

char xm[40];

int i=0,h;

printf(" 1、按学号删除 \n");

printf(" 2、按姓名删除 \n");

printf("请选择:");

fflush(stdin);

scanf("%d",&h);

if (h==1)

{

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

scanf("%s",xh);

for(i=0;ilength;i++)

{

if(strcmp(L->data[i].xh,xh)==0) //判断输入和已知学号一样不

return i;

}

}

else if (h==2)

{

printf("请输入要删除学生的姓名:");

scanf("%s",xm);

for(i=0;ilength;i++)

{

if(strcmp(L->data[i].xm,xm)==0) //判断输入姓名和已知姓名一样不

return i;

}

}

return -1;

}

void sc(SqList *L) //删除函数

{

int i,j;

printf("请先选择您要删除的学生信息的方式:\n");

scanf("%d",&j);

i=cz2(L);

if(i==-1)

{

printf("没有查到要删除的学生信息");

return;

}

for(j=i;jlength;j++) // 要删除学生以后的学生整体上调一位

{

L->data[j].cj=L->data[j+1].cj; //就是后一个覆盖了前一个

strcpy(L->data[j].xh,L->data[j+1].xh);

strcpy(L->data[j].xm,L->data[j+1].xm);

}

L->length--;

printf("该学生信息已被删除!\n");

}

int bc(SqList *L)

{

return (L->length);

}

int main() //主体大函数

{

int i,k;

SqList *L; //定义顺序表的指针

DataType *xs;

L=(SqList *)malloc(sizeof(SqList)*MaxSize);

char q;

ee:

rewind(stdin);

{

printf(" 学生管理系统 \n"); //函数的各个结构

printf(" \n");

printf(" \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(" 请输入");

scanf("%c",&q);

}

if(q=='1')

{

rewind(stdin);

liebiao(L);

goto ee;

}

if(q=='2')

{

rewind(stdin);

bc(L);

printf("共%d个学生\n",L->length);

goto ee;

}

if(q=='3')

{

rewind(stdin);

printf(" 插入 \n");

printf("\t\t 请输入要添加的学生信息: \n");

xs=(DataType *)malloc(sizeof(DataType));

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

scanf("%s",xs->xh);

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

scanf("%s",xs->xm);

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

scanf("%d",&xs->cj);

printf("请输入要插入的位置:\n");

rewind(stdin);

scanf("%d",&i);

cr(L,xs,i);

goto ee;

}

if(q=='4'){rewind(stdin);

printf(" 查找 \n");

printf(" 查询学生信息 \n");

i=cz(L);

if(i!=-1)

{

printf("%s %s %d\n",L->data[i].xh,L->data[i].x m,L->data[i].cj);

}

else

{

printf("信息不存");

}

goto ee;

}

if(q=='5'){

rewind(stdin);

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

sc(L);

goto ee;

}

if(q=='6')

{rewind(stdin);

printf(" 列表 \n");

qb(L);

goto ee;

}

if(q=='0') {printf("谢谢使用\n");

}

if(!(q=='1'||q=='2'||q=='3'||q=='4'||q=='5'||q=='5'||q=='0 '))

{

goto ee;

}

system ("pause");

return 0;

}

主程序:

输入1--6

n=1 n=2

n=3

n=4

n=5

n=6

退出

建表

求表长

插入

查找

删除

列表

建表:

是 否

输入学生个数n , 变量k

k=0; k<=n-1;

输入学号,姓名,成绩

k=k+1 结束

输入查找学号n,变量k

k=0

n=k

是否

k=k+1

输出

是 否

输入插入位置n 表长L 变量k

n<=L

k=0

n=k

k=k+1

strcpy(L->data[j+1].xh,L->data[j].xh);

strcpy(L->data[j+1].xm,L->data[j].xm); L->data[j+1].cj=L->data[j].cj

输入错误

结束

是 否

否 是

输入删除的位置n 变量k 表长L

n<=L

k=0

n=k k=k+1

strcpy(L->data[j].xh,L->data[j-1].xh); strcpy(L->data[j].xm,L->data[j-1].xm); L->data[j].cj=L->data[j-1].cj

输入错误

结束

输入表长L变量k

k<=L

是否输出学号,姓名,成绩

k=k+1

结束

城市链表实验报告

2014-2015学年第一学期实验报告 课程名称:算法与数据结构 实验名称:城市链表

一、实验目的 本次实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。同时,通过本次实验帮助学生复习高级语言的使用方法。 二、实验内容 (一)城市链表: 将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。 (二) 约瑟夫环 m 的初值为20;密码:3,1,7,2,6,8,4(正确的结果应为6,1,4,7,2,3,5)。三、实验环境 VS2010 、win8.1 四、实验结果 (一)城市链表: (1)创建城市链表; (2)给定一个城市名,返回其位置坐标; (3)给定一个位置坐标P 和一个距离D,返回所有与P 的距离小于等于 D 的城市。 (4)在已有的城市链表中插入一个新的城市; (5)更新城市信息; (6)删除某个城市信息。 (二) 约瑟夫环 m 的初值为20;密码:3,1,7,2,6,8,4 输出6,1,4,7,2,3,5。 五、附录 城市链表: 5.1 问题分析 该实验要求对链表实现创建,遍历,插入,删除,查询等操作,故使用单链表。

5.2 设计方案 该程序大致分为以下几个模块: 1.创建城市链表模块,即在空链表中插入新元素。故创建城市链表中包涵插入模块。 2.返回位置坐标模块。 3.计算距离模块 4.插入模块。 5.更新城市信息模块 6.删除信息模块。 5.3 算法 5.3.1 根据中心城市坐标,返回在距离内的所有城市: void FindCityDistance(citylist *L){ //根据距离输出城市 ……//输入信息与距离 L=L->next; w hile(L != NULL){ if(((L->x-x1)*(L->x-x1)+(L->y-y1)*(L->y-y1 )<=dis*dis)&&(((L->x-x1)+(L->y-y1))!=0 )){ printf("城市名称%s\n",L->Name); printf("城市坐标%.2lf,%.2lf\n",L->x,L->y); } L=L->next; } } 该算法主要用到了勾股定理,考虑到不需要实际数值,只需要大小比较,所以只用 横坐标差的平方+纵坐标差的平方<= 距离的平方判定。

实验操作考核评分标准

实验考核评分标准 1. 用自然过滤法分离Fe(OH)3胶状沉淀。 (1)胶体或胶状沉淀不能直接过滤(应先加热破坏胶体,否则会透滤。稍加热示范即可。若学生不加热便过滤,则提示。) (2)自然过滤(滤纸折叠法、撕去一角、放入漏斗、调节水柱、玻棒引流、“三靠两低”等,先转移溶液、后转移沉淀,每次转移量不能超过滤纸高度的2/3。) 2. 现有由CuSO4与NaHCO3在水中反应制备的Cu2(OH)2CO3沉淀,利用倾析法将其与溶液分离并检查SO42-洗净否。 (1)倾析分离(静置、玻棒引流、蒸馏水洗涤两三遍。) (2)SO 42-检查(用小漏斗过滤法,过滤几滴溶液在试管中,因有CO 3 2-、需加几滴HNO 3 、 再加几滴BaCl2溶液检查。) 3. 在不增加溶液体积前提下除去硫酸亚铁铵过饱和溶液中的不溶性杂质。 热过滤操作(加热使硫酸亚铁铵晶体溶解完全、选无颈漏斗并注意预热、过滤时每次转移少量溶液、烧杯中剩余溶液保持加热。注意题目的前提条件,必要时提醒学生80°C以上硫酸亚铁铵晶体会溶解完全。) 4. 将CuSO4·5H2O晶体与母液分离并用乙醇洗涤晶体。 (1)抽滤操作(滤纸大小、润湿滤纸、稍抽气使滤纸紧贴、玻棒引流、注意加入的溶液不能超过漏斗容积的2/3、开大水龙头抽滤、滤饼要较均匀地铺满漏斗底、用药勺压实滤饼、抽滤至干、先拔橡皮管再关水龙头、玻棒轻轻揭起滤纸边、取出滤纸与沉淀、滤液从抽滤瓶的上口倒出。) (2)洗涤操作(2种方法:沉淀较多时,拔掉橡皮管暂停抽滤、加入洗涤剂洗涤;沉淀较少时,关小水龙头、加入洗涤剂洗涤。我们要求用前一种方法,所以要求学生过滤较多晶体。) 5. 将预先已称好的10.0 g CuSO4·5H2O晶体重结晶。 重结晶操作(按1:1量好10mL蒸馏水,先加部分水、几滴H2SO4,加热至沸,若晶体未完全溶解,则用滴管逐滴加水至晶体刚好完全溶解,停止加热,然后用水冷却或自然冷却。注:不允许浓缩、不用过滤。) 6. 水浴蒸发浓缩制备CuSO4·5H2O晶体。 (1)水浴加热(500 mL大烧杯、水量为其容量的1/2~2/3。) (2)蒸发浓缩(蒸发皿。先加硫酸酸化再加热、前期搅拌、发现有晶体析出时停止搅拌,浓缩至表面出现一层完整的晶膜即停止加热浓缩。) 7. 称取5.0 g NaCl固体并将其溶解。 (1)电子秤的使用(注意:不能用滤纸称量、不能将试剂撒在电子秤上。) (2)固体试剂的取用(试剂瓶盖子反过来放在实验台上、用干净药勺取试剂、取出试剂后立即盖紧瓶盖、取多的药品不能倒回原瓶) (3)固体溶解(加热、搅拌) 8. 将15.0 mL 0.1 mol/L Fe2(SO4)3溶液沉淀完全。 (1)沉淀操作(煮沸后边搅拌边滴加NaOH溶液、双手并用。沉淀完全后要煮沸一段时间,要学生口头说明即可。)

链表实验报告

C语言程序设计实验报告 实验一:链表的基本操作一·实验目的 1.掌握链表的建立方法 2.掌握链表中节点的查找与删除 3.掌握输出链表节点的方法 4.掌握链表节点排序的一种方法 5.掌握C语言创建菜单的方法 6.掌握结构化程序设计的方法 二·实验环境 1.硬件环境:当前所有电脑硬件环境均支持 2.软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点

r=head;//r指向头结点 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据{ scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=head->next; do { printf("%3d",p->data); p=p->next; } while(p); printf("\n") } Status insert ( linklist &l,int i, Elemtype e)//插入操作 { int j=0; linklist p=l,s; while(jnext; ++j; } if(!p || j>i-1) return -1; else { s=(node *)malloc(sizeof(node)); s->data=e; s->next=p->next; p->next=s; return 1; } } Status delect ( linklist &l,int i, Elemtype &e)//删除操作 { int j=0; linklist p=l,q; while(jnext) { p=p->next; ++j; } if(!p->next || j>i-1) return -1;

王家庄小学科学实验操作考核总结

王家庄小学学生科学实验操作考核总结 为了进一步促进我校《科学》实验教学的开展,培养学生初步的观察能力、 实验能力和动手能力,发展学生的想象能力和创新精神,提高学生整体素质, 根据区教育局通知,我校在放假前对3-6年级的学生科学实验操作进行了考核, 现总结如下: 一、成立了实验操作考核的组织领导小组 实验操作考核领导小组 组长:王军庆 副组长:董兴堂 组员:赵国耀蔺香梅齐娟王菊梅魏志华 二、拟定各年级试题 我校3--6年级均参加小学生参加科学实验操作考核,并将考核成绩列入期 末。小学科学实验操作考核的命题范围是以课程标准为依据,试题和评分标准由 教导处拟定。试题公开,并提前下发到学生手中。各年级试题如下: 1、三年级科学实验操作考试试题 试题:用温度计测量水的温度 实验题目:用温度计测量一杯热水的温度 实验用品:400ml烧杯一个,一支温度计,适量冷水和一暖壶热水,吸水纸, 废物瓶,水温测量记录表,手帕。 考核学生姓名: 步骤操作要求评分标准满分得分备注 1 清点材料与 用具 按材料清单清点物品是否齐全(5分)。 5 2 观察温度计 的零刻度线、 分度值和量 程 A、观察温度计的零刻度线(5分)。 B、观察温度计的分度值和量程(10分)。 15 3 用手感知水 温 将手指伸入烧杯中(冷水)或将手放在烧 杯外壁(热水),用手感知温度(10分), 估计水温(10分)。 20

4 用温度计测 量水的温度 并且读数、填 表 A、手拿温度计上端,将其竖直放入水中(10 分)。 B、温度计的玻璃泡要完全浸没在水中,玻 璃泡不要碰到烧杯的侧壁和底部(10分)。 C、等示数稳定时再读数。读数时要让玻璃 泡继续停留在水中(10分)。 D、视线要和温度计示数保持向平(10分)。 E、将测得的数据填写在记录表上(5分)。 45 5 整理仪器,擦 拭桌面 A、用手帕将温度计擦干装入盒内,烧杯里 面水倒掉,并放回原处,摆放整齐(10分)。 B、擦拭桌面(5分)。 15 2、四年级科学实验操作考试试题 试题:使用电池盒和小灯座连接简单电路 实验题目:使用电池盒和小灯座连接简单电路 实验用品:小灯座、电池盒、导线、小灯泡、电池、开关。 考核学生姓名: 步骤操作要求评分标准满分得分备注 1 清点材料与 用具 按材料清单清点物品是否齐全(5分)。 5

链表实现多项式相加实验报告

实验报告 课程名称:数据结构 题目:链表实现多项式相加 班级: 学号: 姓名: 完成时间:2012年10月17日

1、实验目的和要求 1)掌握链表的运用方法; 2)学习链表的初始化并建立一个新的链表; 3)知道如何实现链表的插入结点与删除结点操作; 4)了解链表的基本操作并灵活运用 2、实验内容 1)建立两个链表存储一元多项式; 2)实现两个一元多项式的相加; 3)输出两个多项式相加后得到的一元多项式。 3、算法基本思想 数降序存入两个链表中,将大小较大的链表作为相加后的链表寄存处。定义两个临时链表节点指针p,q,分别指向两个链表头结点。然后将另一个链表中从头结点开始依次与第一个链表比较,如果其指数比第一个小,则p向后移动一个单位,如相等,则将两节点的系数相加作为第一个链表当前节点的系数,如果为0,则将此节点栓掉。若果较大,则在p前插入q,q向后移动一个,直到两个链表做完为止。 4、算法描述 用链表实现多项式相加的程序如下: #include #include #include struct node{ int exp; float coef; struct node*next; };

void add_node(struct node*h1,struct node*h2); void print_node(struct node*h); struct node*init_node() { struct node*h=(struct node*)malloc(sizeof(struct node)),*p,*q; int exp; float coef=1.0; h->next=NULL; printf("请依次输入多项式的系数和指数(如:\"2 3\";输入\"0 0\"时结束):\n"); p=(struct node*)malloc(sizeof(struct node)); q=(struct node*)malloc(sizeof(struct node)); for(;fabs(coef-0.0)>1.0e-6;) { scanf("%f %d",&coef,&exp); if(fabs(coef-0.0)>1.0e-6) { q->next=p; p->coef=coef; p->exp=exp; p->next=NULL; add_node(h,q); } } free(p); free(q); return(h); } void add_node(struct node*h1,struct node*h2) { struct node*y1=h1,*y2=h2; struct node*p,*q; y1=y1->next; y2=y2->next; for(;y1||y2;) if(y1) { if(y2) { if(y1->expexp) y1=y1->next; else if(y1->exp==y2->exp) { y1->coef+=y2->coef; if(y1->coef==0)

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);

2018年理、化、生实验操作考试工作总结范文

2018年理、化、生实验操作考试工作总结范文 根据陕二办(XX)25号和x市考发(XX)39号等有关文件精神,xx中学于XX年3月7日举行了XX年度理、化、生实验操作考试。应参加考试204人,实参加考试199人,5人因故缺考。根据考试情况来看,期中物理最高98分,平均86.1分,合格率100%;化学最高96分,平均89.9分,合格率99.5%;生物最高98分,平均90.4分,合格率100%。现将我校XX年度理、化、生实验操作考试总结 一、领导重视,精心部署,制定了严密的实施方案。 理化生实验操作考试是高中学业水平考试的重要组成部分,是检验实验教学的重要手段,也是高考录取的参考。做好理化生实验操作考试是端正考风、树立教育良好形象,为国选才的重要工作,事关维护社会稳定的大局。因此县教体局成立了以龙局长为组长的领导小组,精心策划、精选监考,制定了严密的实施方案。学校也制定了实施细则,对考试的流程进行了精心安排、对考试的药品、仪器和器材进行了认真检查和补充。 二、准备充分,要求严格,进行了认真的考务培训。 3月6日下午,县考管中心全体工作人员、xx中学的主考、副主考、监考和考试工作人员29人在xx中学小会议室进行了考务培训。会议组织学习了《考试通知》、《考试方案》、《监考职责》。

主考王彬校长做了动员讲话,县局刘书记强调了实验操作考试的极端重要性。会上主考与考管中心主任签订了责任书。会后分学科进行了监考培训、工作人员考务组织培训、抽签培训。学校还对考生进行了考前教育。 三、操作规范,公平公正,举行了统一的操作考试。 3月7日清晨,监考员和考务工作人员早早来到考点,做考前的最后准备工作,7:50第一组考生顺利完成抽签,分三科进入考场。每个考场安排一名主监考和六名副监考,每位副监考负责一道实验操作考试监考。考试进行了一整天,监考老师坚守岗位,认真监考,公平评判,始终如一。带队老师组织学生,先将每组学生(72人)随机分为三个学科小组,每个学科小组随机抽签决定考试试题,每道题由四人同时操作,整个考试过程井然有序。 四、总结及时,寻找差距,反馈了教学的得失建议。 理化生实验考试结束以后,学校抓住机遇,对实验教学中存在的问题进行及时整改、制定了实验管理元绩效考核办法和理化生科任教师实验教学考核办法,对仪器、药品、器材进行了普查补充,重新核定了各年级理化生学生实验、演示实验、探究实验教学目录,作为检查实验开出率的依据。

单链表的插入和删除实验报告

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #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(); //函数,用尾插入法建立带头结点的单链表

ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存 //==========主函数============== void main() { char ch[10],num[10]; LinkList head; head=CreatListR1(); //用尾插入法建立单链表,返回头指针printlist(head); //遍历链表输出其值 printf(" Delete node (y/n):");//输入“y”或“n”去选择是否删除结点scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

实验报告一顺序表的操作

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

理化实验操作考试监考心得

2015年理化实验操作考试监考总结 平定县岔口中学梁文华 2015年5月,我有幸被平定县教育局选为中考化学实验操作考试监考教师,专门负责试题一、二两个实验的监考,在长达5天的时间里,看了成百上千名学生做实验的情况,感受颇深。 一、领导重视,师生落实 1.物理、化学实验考试是学生升学考试的一部分,对提高学生的操作能力有很大的意义。对学生的实验考试很有必要的。实验考试一直得到了上级领导的重视。在得到考试通知后,各学校领导高度重视,大力支持,从资金、时间、后勤上给予保证; 2.各学校教务处精心组织考务工作认真落实考务,监考教师上岗前都经过了培训; 3.实验教师及时清点器材认真准备,发现不足及时弥补; 4.上级领导安排井然有序,时间充裕; 5.在监考前夕,深感任务重大,但评分细则的详尽,带队领导的嘱咐,都使得实验考试的监考变得简单易行。 二、取得的成绩 1.考试成绩:总体来说成绩很好,大部分学生都能合格,满分比例也不小; 2.化学每个实验能够按照基本步骤完成,能对实验现象分析,能正确回答实验结果; 3.绝大多数同学的实验能力得到了提高,操作步骤正确; 4.学生很会整理器材,爱护仪器。 三、监考过程中发现的几点问题: 1.学生钻了评分细则的空子。每个学生在考试前都已经阅读并且看过相应的评分细则,甚至在练习实验时就是按照细则一步步进行的,而其他操作并没有规范,导致在监考过程中经常会出现这样的评价:你这儿不应该……,而应该……,但是由于评分细则中没有这一条,所以不扣分。这无形中放任了学生的错误。 2.抽签后依然让学生拿着资料复习。学生进实验室后,开考第一件事就是把所有答案填完整,更有学生,实验做错了,出现的现象跟预期的不一样,依然指鹿为马,把背好的答案填上。如试题二“物理变化与化学变化的探究”中,一个是水的沸腾实验,一个是NaOH溶液与CuSO4溶液的反应,有的同学不明原理,直接在沸腾的水中滴入两种溶液,形成了黑色不溶物CuO,孩子们看着黑色的沉淀,违心地告诉我:“老师,生成了蓝色沉淀!”这大大违背了化学科学探究以实验事实得结论的原则。 四、学生在考试过程中的失分点: 1.称量氯化钠时,在天平的两个托盘上各放一张称量纸,一定要注意,右盘也必须放; 2.用镊子取5克砝码,放在右托盘,然后用药匙向左托盘中加氯化钠,不可先加氯化钠,再放砝码;

实验操作考核工作总结

2016香积寺中学理化实验操作考核工作总结我校根据区教育局的组织安排,5月11号进行了九年级物理、化学实验操作考核,通过考核组的辛勤工作、共同努力,圆满地完成了实验操作考核工作。 一、统一认识,加强领导 校领导十分重视实验操作考核工作,组织了有关人员认真学习省、市文件。加大了实验操作考试宣传的力度,校领导在各种会议上都把实验操作考核工作作为重要内容加以强调,学校召开了相关教师会,落实布置了考务工作,将实验操作考核的有关精神向学生、家长、社会大力宣传,明确了分工,落实了责任。 二、精心策划、认真实施 (1)本学期开学我校进行了理科实验装备摸底调查,为学校补充了实验仪器,确保实验教学和考核工作能正常的进行。召开了理科实验教师及管理人员培训会,对理科实验教学及管理工作进行了培训,有效的提高了实验教师及管理人员的业务水平。 (2)制定了2016年实验操作考核实施办法。设置考点,所有学生在本校参加考试,以保证安全和不影响正常上课。重视实验操作考试,组织了学生考前训练,实验仪器准备充分,考试组织工作井然有序 (3)在学校抽调职业道德好、业务素质较高、责任心较强、在理化实验教学中有一定声望的理化教师、实验师,组成理化实验操作考核小组,对九年级毕业生进行了物理、化学实验操作考核。 三、统一标准,公正评分

考试教师的选聘和培训是实现公平公正考核的条件。因此,我们选聘的考试教师的基本条件是:师德高尚、责任心强、专业技术过硬、在学校有名望。由此组成了实验操作考核组,经过严格的实地培训,认真学习了《理化实验操作考核规则》、《监考教师职责》,明确了职责;仔细研究了试题及评分意见,制定出统一评分标准及实施细则,在考核中切实做到了给分有理、扣分有据,体现了公平公正的原则。 四、严肃纪律,确保安全 为保证考试的信度,严格了考试纪律,杜绝一切循私舞弊的违纪行为。整个考核过程由区督导室参与督查、督办,整个考核工作无一违纪、违规现象,确保了考试的公平公正和成绩的真实可。确保实验操作过程安全,没有出现任何安全事故,保证了整个考核工作万无一失。 五、效果明显,成绩喜人 由于各级领导和学校重视实验操作考核,组织工作完善,学校均由校长牵头,分管领导和相关教师具体组织学生参加考试,考核工作井然有序,学生操作熟练,动手能力普遍较强。 2016年5月

理化实验操作考试监考心得

理化实验操作考试监考 心得 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

2015年理化实验操作考试监考总结 平定县岔口中学梁文华 2015年5月,我有幸被平定县教育局选为中考化学实验操作考试监考教师,专门负责试题一、二两个实验的监考,在长达5天的时间里,看了成百上千名学生做实验的情况,感受颇深。 一、领导重视,师生落实 1.物理、化学实验考试是学生升学考试的一部分,对提高学生的操作能力有很大的意义。对学生的实验考试很有必要的。实验考试一直得到了上级领导的重视。在得到考试通知后,各学校领导高度重视,大力支持,从资金、时间、后勤上给予保证; 2.各学校教务处精心组织考务工作认真落实考务,监考教师上岗前都经过了培训; 3.实验教师及时清点器材认真准备,发现不足及时弥补; 4.上级领导安排井然有序,时间充裕; 5.在监考前夕,深感任务重大,但评分细则的详尽,带队领导的嘱咐,都使得实验考试的监考变得简单易行。 二、取得的成绩 1.考试成绩:总体来说成绩很好,大部分学生都能合格,满分比例也不小; 2.化学每个实验能够按照基本步骤完成,能对实验现象分析,能正确回答实验结果; 3.绝大多数同学的实验能力得到了提高,操作步骤正确;

4.学生很会整理器材,爱护仪器。 三、监考过程中发现的几点问题: 1.学生钻了评分细则的空子。每个学生在考试前都已经阅读并且看过相应的评分细则,甚至在练习实验时就是按照细则一步步进行的,而其他操作并没有规范,导致在监考过程中经常会出现这样的评价:你这儿不应该……,而应该……,但是由于评分细则中没有这一条,所以不扣分。这无形中放任了学生的错误。 2.抽签后依然让学生拿着资料复习。学生进实验室后,开考第一件事就是把所有答案填完整,更有学生,实验做错了,出现的现象跟预期的不一样,依然指鹿为马,把背好的答案填上。如试题二“物理变化与化学变化的探究”中,一个是水的沸腾实验,一个是NaOH溶液与CuSO4溶液的反应,有的同学不明原理,直接在沸腾的水中滴入两种溶液,形成了黑色不溶物CuO,孩子们看着黑色的沉淀,违心地告诉我:“老师,生成了蓝色沉淀!”这大大违背了化学科学探究以实验事实得结论的原则。 四、学生在考试过程中的失分点: 1.称量氯化钠时,在天平的两个托盘上各放一张称量纸,一定要注意,右盘也必须放; 2.用镊子取5克砝码,放在右托盘,然后用药匙向左托盘中加氯化钠,不可先加氯化钠,再放砝码; 3.多余氯化钠应放入规定的“盛放多余氯化钠”的烧杯中,切不可放回原瓶; 4.将称好的氯化钠及时倒入烧杯中,避免之后的实验过程中,氯化钠洒在实验台上;

链表的基本操作-数据结构实验报告

大学数据结构实验报告 课程名称数据结构实验第(四)次实验实验名称链表的基本操作 学生姓名于歌专业班级学号 实验成绩指导老师(签名)日期2018年10月01日 一、实验目的 1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体 的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。 2. 掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。 二、实验要求 1.预习C语言中结构体的定义与基本操作方法。 2.对单链表的每个基本操作用单独的函数实现。 3.编写完整程序完成下面的实验内容并上机运行。 4.整理并上交实验报告。 三、实验内容: 1.编写程序完成单链表的下列基本操作: (1)初始化单链表La (2)在La中插入一个新结点 (3)删除La中的某一个结点 (4)在La中查找某结点并返回其位置 (5)打印输出La中的结点元素值 (6)清空链表 (7)销毁链表 2 .构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、 Lb合并成一个有序单链表Lc。 四、思考与提高: 1.如果上面实验内容2中合并的表内不允许有重复的数据该如何操作? 2.如何将一个带头结点的单链表La分解成两个同样结构的单链表Lb,Lc,使得Lb中只含La表中奇数结点,Lc中含有La表的偶数结点?五、实验设计 1.编写程序完成单链表的下列基本操作: (1)初始化单链表La LinkList InitList() {

int i,value,n; LinkList H=(LinkList)malloc(sizeof(LNode)); LinkList P=H; P->next=NULL; do{ printf("请输入链表的长度:"); scanf("%d",&n); if(n<=0) printf("输入有误请重新输入!\n"); }while(n<=0); printf("请输入各个元素:\n"); for(i=0; idata=value; P->next=NEW; NEW->next=NULL; P=NEW; } printf("链表建立成功!\n"); return H->next; } (2)在La中插入一个新结点 LinkList InsertList(LinkList L,int i,ElemType value) { LinkList h,q,t=NewLNode(t,value); int x=0; h=q=L; if(i==1) t->next=h, h=t; else { while(x++next; t->next=q->next; q->next=t; } printf("插入成功!\n"); return h; } (3)删除La中的某一个结点

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

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

初中理化生实验操作考试小结

初中理化生实验操作考试小结 在县教育局的统一安排下,我校进行了初中毕业生实践能力考试(理化生实验操作考试)。初二年级的生物实验操作考试应参加的考生共有51人,其中因故未能参加考试的有4人;初三年级物理、化学实验操作考试应参加考试学生52人,实际参加考试52人。初二生物实验操作总平均分8.2分,初三物理实验操作总平均分8.8分,初三化学实验操作总平均分7.4分(均以实考人数计算)。初中生实践能力考试正式纳入初中学业水平考试有力推进了新课程的改革,有利于学生综合素质的提高,推动了素质教育的进一步发展。现就我校理化生实验操作考试情况小结如下: 1、本次实验操作考试能够严格按照《湘西自治州初中毕业生实践能力考试方案》的要求执行,学校成立了考试领导小组,分工明确。工作人员能够积极履行各自职责,一切为学生负责,一切为考试负责,做到了公平、公正。 2、实验教学得到了强化,学生实践能力有了明显提高。通过这次实验操作考试,我校理化生教师对实验教学有了更进一步的认识,充分认识到实验教学的重要性以及意义,实验教学得到了强化。学生动手能力有了明显提高,同时学生的学习兴趣得到了很好的培养。 3、存在的问题。在教育局相关领导的支持下,本次考试能够在我校顺利完成。但也存在一些问题,主要是学校实验设备缺乏。结合本次考试,我校实验操作考试存在以下问题: (1)实验室不足。现我校只有一间实验室,理化生共用。 这次考试临时腾出了两间教室作为考试用,没有实验桌,用课桌代替。(2)仪器配备不齐。本次初二生物实验操作考试至少需要12台显微镜,而我校尚欠4台(所欠4台仪器站借来我校)。 初三化学实验操作考试连试管架都不齐。 初中毕业生实践能力考试纳入中考是初中学业水平考试的一项重要改革,有利于实现新课改,有利于学生综合素质的提高,有力地推进了素质教育的全面发展。在我校将一如既往地搞好实验教学,努力改善实验教学硬件设施。 1/ 1

链表基本操作实验报告

实验2 链表基本操作实验 一、实验目的 1. 定义单链表的结点类型。 2. 熟悉对单链表的一些基本操作和具体的函数定义。 3. 通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验内容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、 算法分析与设计。 头结点 ......

2.单链表插入 s->data=x; s->next=p->next; p->next=s; 3.单链表的删除: p->next=p->next->next;

四、运行结果 1.单链表初始化 2.创建单链表 3.求链表长度 4.检查链表是否为空 5.遍历链表 6.从链表中查找元素 7.从链表中查找与给定元素值相同的元素在顺序表中的位置

8.向链表中插入元素 插入元素之后的链表 9.从链表中删除元素 删除位置为6的元素(是3) 10.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程序做了仔细的分析,对单链表创建、插入、删除算法画了详细的N-S流程图。

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

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

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

大学数据结构实验报告 课程名称数据结构实验第(三)次实验实验名称顺序表的应用 学生姓名于歌专业班级学号 实验成绩指导老师(签名)日期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

单链表的基本操作实验报告

湖南第一师范学院信息科学与工程系实验报告 课程名称:数据结构与算法成绩评定: 实验项目名称:单链表的基本操作指导教师: 学生姓名:沈丽桃学号: 10403080118 专业班级: 10教育技术 实验项目类型:验证实验地点:科B305 实验时间: 2011 年 10 月20 日一、实验目的与要求: 实验目的:实现线性链表的创建、查找、插入、删除与输出。 基本原理:单链表的基本操作 二、实验环境:(硬件环境、软件环境) 1.硬件环境:奔ⅣPC。 2.软件环境:Windows XP 操作系统,TC2.0或VC++。 三、实验内容:(原理、操作步骤、程序代码等) #include #include #include struct celltype { int element; struct celltype*next; }; typedef int position; void main() { struct celltype*head,*p; int x,choice; void INSERT(int x,struct celltype*p); void LOCATE(int x,struct celltype*p); void DELETE(int x,struct celltype*p); p=(struct celltype*)malloc(sizeof(struct celltype)); head=p; p->element=0; p->next=NULL; printf(“Please option:1:Insert 2:Locate 3:Delete\n”); printf(“Please choose:”); scanf(“%d”,&choice); switch(choice) case 1: printf(“Please input a node:”); scanf(“%d”,&x);

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

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

相关文档
最新文档