线性表顺序存储及其应用.docx
《线性表顺序存储及其应用.docx》由会员分享,可在线阅读,更多相关《线性表顺序存储及其应用.docx(11页珍藏版)》请在冰点文库上搜索。
线性表顺序存储及其应用
云南大学物理实验教学中心
实验报告
课程名称:
软件技术基础上机
实验项目:
线性表(顺序存储)及其应用
学生姓名:
曹砷坚学号:
20081050077
物理科学技术学院物理系08级电子科学与技术专业
成绩
指导教师:
马琳
实验时间:
2010年9月20日时分至时分
实验地点:
格物楼
实验类型:
教学(演示□验证□综合□设计■)学生科研□
课外开放□测试□其它□
云南大学物理实验教学中心实验预习报告
实验一线性表(顺序存储)及其应用
一.实验目的
1.掌握顺序表的建立及基本操作。
二.实验要求
建立一个顺序表,表中元素为学生,每个学生信息包含姓名和学号两部分,对该表实现:
①输出、②插入、③删除、④查找功能。
三.实验原理
1.顺序表的建立
在程序语言设计语言中,通常定义一个一维数组来表示线性表的顺序存存储空间。
因为程序设计语言中一唯数组与计算机中世界的存储空间结构是类似的,这就便于用程序设计语言对线性表进行各种运算处理。
2.顺序表的插入
在一般情况下,要在第i(1≤i≤n)个元素之前插入一个新元素时,首先要将从最后一个(即第n个)元素开始,直到第i个元素之间的共n-i+1个元素,依次向后移动一个位置;移动结束后,第i个元素将被空出;然后将新元素插入到第i项。
插入结束后,线性表的长度就增加了1。
3.顺序表的删除
在一般情况下,要删除顺序表第i(1≤i≤n)个元素时,需要从i+1个元素开始将直到第n个元素之间的总共n-i个元素,依次向前移动一个位置。
删除结束后线性
表的长度将减去1。
4.顺序表的查找
从线性表中第一个元素开始,依次将线性表中的元素进行比较,若相等则表示找到(即查找成功);若线性表中所有的元素都与被查找元素进行了比较但都不相等,则表示线性表中没要找的元素(即查找失败)。
四.实验设计
#include"stdafx.h"
#include"malloc.h"
#include"string.h"
#include"conio.h"
#include"iostream.h"
#defineKM7
#defineLENsizeof(STU)
classSTU
{
public:
charname[20];
intnum;
floatscore[7];
STU*next;
};
voidscore_in(floatsco[])
{
inti=0;
while(i{
printf("enterscore%d\n",i);
cin>>sco[i];
i++;
}
}
voidpw_in(char*pw)
{
charc;
//charpw[128]={'\0'};
charincr[2]={0,'\0'};
inti=0;
while('\r'!
=(c=getch()))
{
if(c==0x08){
i--;
printf("\b");
printf("");
printf("\b");
continue;
}else{
printf("*");
}
incr[0]=c;
strcat(pw,incr);
i++;
}
pw[i]='\0';
printf("\n");
//printf("\n%s",pw);
}
intgl_log()
{
inti=0,user=1;
charid[20]="";
charid1[20]="pcgg5244";
charpw1[128]="524413";
charpw[128]={'\0'};
printf("chooseuser:
1student2teacher\n");
cin>>user;
printf("enterID:
\n");
cin>>id;
printf("enterpassword:
\n");
pw_in(pw);
intcmp_id=strcmp(id,id1);
intcmp_pw=strcmp(pw,pw1);
if(user==1&&cmp_id==0&&cmp_pw==0)i=1;
elseif(user==2&&cmp_id==0&&cmp_pw==0)i=2;
returni;
}
STU*gl_rd()
{
//STUh;
STU*head=0;
fpos_tpos=0;
FILE*fp;
fp=fopen("list.dat","rb");
STU*q1=newSTU;
fread(q1,LEN,1,fp);
head=q1;
while(q1->next)
{
q1=newSTU;
pos+=LEN;
fsetpos(fp,&pos);
fread(q1,LEN,1,fp);
}
//printf("%s%d%.1f\n",q1->name,q1->num,q1->score[0]);
fclose(fp);
returnhead;
}
voidgl_fd(intstu_num)
{
STU*h=gl_rd();
while(h)
{
if(h->num==stu_num)
{
printf("studentname:
%sstudentnumber:
%d\n",h->name,h->num);
floatsum=0,avr=0;
for(inti=0;i{
sum+=h->score[i];
printf("score%d:
%.1f",i,h->score[i]);
}
printf("\n");
avr=sum/KM;
printf("totalscore:
%.1faveragescore:
%.1f\n",sum,avr);
}
h=h->next;
}
}
STU*creat()
{
charsi='y';
STU*head=0;
STU*p1=newSTU;
FILE*fp;
fp=fopen("list.dat","ab+");
fseek(fp,0,SEEK_END);
head=p1;
printf("entername&num:
\n");
cin>>p1->name>>p1->num;
score_in(p1->score);
while(si=='y')
{
STU*p2=p1;
p1=newSTU;
p2->next=p1;
fwrite(p2,LEN,1,fp);
printf("next:
\n");
cin>>p1->name>>p1->num;
score_in(p1->score);
printf("more?
y//n\n");
cin>>si;
}
p1->next=0;
fwrite(p1,LEN,1,fp);
fclose(fp);
returnhead;
}
intmain(intargc,char*argv[])
{
intlog_u=gl_log();
while(0==log_u)
{
printf("error!
\n");
log_u=gl_log();
}
if(log_u==1)
{
intnum=0;
printf("enterstudentnumber:
\n");
cin>>num;
gl_fd(num);
}
elseif(log_u==2)
{
FILE*file;
if((file=fopen("list.dat","r"))==NULL)creat();
elsefclose(file);
intcs=0;
printf("makeachoose:
0exit1add2change3insert4chaxun\n");
cin>>cs;
switch(cs)
{
case0:
break;
case1:
printf("x\n");break;
case2:
printf("x\n");break;
case3:
printf("x\n");break;
case4:
printf("x\n");break;
}
}
//STU*h=creat();
/*
STUh;
fpos_tpos;
FILE*fp;
//charstr[100]="";
fp=fopen("list.dat","rb");
//fwrite(h,LEN,1,fp);
//rewind(fp);
//fread(&h,LEN,1,fp);
//fgetpos(fp,&pos);
//printf("%d\n",pos);
pos=0;
fsetpos(fp,&pos);
fread(&h,LEN,1,fp);
printf("%s%d%.1f\n",h.name,h.num,h.score[0]);
//fseek(fp,0,SEEK_END);
fclose(fp);
*/
/*
while(h)
{
if(h->num==1)
{
printf("name:
%snum:
%d\n",h->name,h->num);
floatsum=0,avr=0;
for(inti=0;i{
sum+=h->score[i];
}
avr=sum/KM;
printf("totalscore:
%.1faveragescore:
%.1f\n",sum,avr);
}
h=h->next;
}
*/
return0;
}
云南大学物理实验教学中心实验报告
云南大学物理实验教学中心实验报告(原始数据及现象记录)
实验指导老师签名
学生签名
实验指导老师填写
1、实验记录是否完整准确□2、有无涂改抄袭现象□
云南大学物理实验教学中心实验报告
云南大学物理实验教学中心实验报告
评分内容
预习
操作
数据处理与分析
实验报告
其他
综合评定成绩
分数
教师评语:
签字:
--------------------------------------------------------------------------------------------------------------------------
备注: