顺序表链表总结实验报告Word下载.docx
- 文档编号:3273568
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:38.23KB
顺序表链表总结实验报告Word下载.docx
《顺序表链表总结实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《顺序表链表总结实验报告Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
);
fflush(stdin);
scanf("
%d"
&
n);
for(k=0;
k<
=n-1;
k++)
请输入学生学号\n"
%s"
L->
data[k].xh);
请输入学生名字\n"
data[k].xm);
请输入学生成绩\n"
L->
data[k].cj);
length=n;
}
voidqb(SqList*L)//全部输出
intk,w;
length;
w=k+1;
第%睢学生:
”,w);
%s%s%d\n"
data[k].xh,L->
data[k].xm,L->
data[k].cj);
插入
intcr(SqList*L,DataType*xs,inti)//
信息
intj;
if(L->
length==MaxSize)
没有!
"
return0;
elseif((i<
0)||(i>
length))
程序溢出,不符合"
else
for(j=L->
length-1;
j>
=i;
j--)
strcpy(L->
data[j+1].xh,L->
data[j].xh);
data[j+1].xm,L->
data[j].xm);
data[j+1].cj=L->
data[j].cj;
data[i].xh,xs->
xh);
data[i].xm,xs->
xm);
data[i].cj=xs->
cj;
length=L->
length+1;
intcz(SqList*L)//
查找信息
inti=0,u;
1
请选择:
"
fflush(stdin);
scanf("
u);
if(u==1)
请输入要查找学生的学号:
xh);
for(i=0;
i<
i++)
if(strcmp(L->
data[i].xh,xh)==0)returni;
if(u==2)
请输入要查找学生的姓名:
xm);
data[i].xm,xm)==0)
returni;
if(u==3)
请输入要查找学生的成绩:
cj);
data[i].cj,&
cj)
return-1;
//*如果没找到,返回-1
intcz2(SqList*L)//删除查找的函数
inti=0,h;
1、按学号删除\n"
2、按姓名删除\n"
h);
if(h==1)
请输入要删除学生的学号:
判断输入和
data[i].xh,xh)==0)//
已知学号一样不
elseif(h==2)
请输入要删除学生的姓名:
data[i].xm,xm)==0)//断输入姓名和已知姓名一样不
voidsc(SqList*L)//删除函数
inti,j;
请先选择您要删除的学生信息的方式:
j);
i=cz2(L);
if(i==-1)
没有查到要删除的学生信息"
return;
要删除学
就是后一
for(j=i;
j<
j++)//生以后的学生整体上调一位
data[j].cj=L->
data[j+1].cj;
//个覆盖了前一个
data[j].xh,L->
data[j+1].xh);
data[j].xm,L->
data[j+1].xm);
length--;
该学生信息已被删除!
intbc(SqList*L)
return(L->
length);
intmain()//主体大函数
inti,k;
SqList*L;
//定义顺序表的指针
DataType*xs;
L=(SqList*)malloc(sizeof(SqList)*MaxSize);
ee:
rewind(stdin);
学生管理系统\n"
//
个结构
\n"
建立表格请输入1
求表长请输入2
插入请输入3
查找请输入4
删除请输入5
列表请输入6
函数的各
请输入"
%c"
q);
if(q=='
1'
)
liebiao(L);
gotoee;
2'
bc(L);
printf("
共%小个学生\n"
length);
3'
插入\n"
\t\t请输入要添加的学生信息:
xs=(DataType*)malloc(sizeof(DataType));
xs->
xs->
cj);
请输入要插入的位置:
i);
cr(L,xs,i);
4'
){rewind(stdin);
查找\n"
查询学生信息\n"
i=cz(L);
if(i!
=-1)
%s%s
%d\n"
data[i].xh,L->
data[i].x
m,L->
data[i].cj);
信息不存"
}if(q=='
5'
){rewind(stdin);
删除\n"
删除学生信息\n"
sc(L);
gotoee;
6'
{rewind(stdin);
列表\n"
qb(L);
0'
){printf("
谢谢使用\n"
if(!
(q=='
||q=='
'
))
system("
pause"
主程序:
建表:
是否
查找:
是I否
插入:
否
删除:
1F
是
列表:
学生管理系统(链表)
1.建表
2.删除
3.列表
4.退出
structxuesheng
charxh[7];
structxuesheng*next;
};
structxuesheng*cha_ru(structxuesheng*x)
structxuesheng*p,*q;
intc;
do
if(x==0){x=(structxuesheng*)malloc(sizeof(structxuesheng));
printf("
inputxh:
(*x).xh);
inputxm:
(*x).xm);
inputcj:
(*x).cj);
(*x).next=0;
}
else{p=x;
while((*p).next!
=0){p=(*p).next;
q=(structxuesheng*)malloc(sizeof(structxuesheng));
(*q).xh);
(*q).xm);
(*q).cj);
(*p).next=q;
(*q).next=0;
nihaijixume?
1/2:
c);
while(c==1);
return(x);
intlink_len(structxuesheng*x)
structxuesheng*p;
intl=0;
p=x;
if(p!
=0)do{l=l+1;
p=p->
next;
}while(p!
=0);
return(l);
}structxuesheng*shan_chu(structxuesheng*x){structxuesheng*p,*q,*t;
intk,l,i;
q=x;
l=link_len(x);
inputshanchujiedianxuhao:
k);
if(k<
=0||k>
l)printf("
errordata!
if(k==1){x=p->
t=p;
free(t);
}if(k>
1&
&
=l){for(i=1;
=k-2;
i=i+1)p=p->
t=p->
for(i=1;
=k;
i=i+1)q=q->
p->
next=q;
}printf("
vvvvvvvshanchuwanbi!
vvvvvvv\n"
voidlie_biao(structxuesheng*x)
intl;
if(p==0)printf("
gaibiaoweikong!
elsedo{
%20s%20s%7d\n"
(*p).xh,(*p).xm,(*p).cj);
p=(*p).next;
while(p!
l=%d\n"
l);
main()
structxuesheng*s_head;
intn;
s_head=0;
1:
charu\n"
2:
chazhao\n"
3:
shanchu\n"
4:
liebiao\n"
5:
tuichu\n"
input1---5:
switch(n)
case1:
s_head=cha_ru(s_head);
break;
/*case2:
cha_zhao(s_head);
*/
case3:
s_head=shan_chu(s_head);
case4:
lie_biao(s_head);
}while(n==1||n==3||n==4);
框图:
主函数:
否是
总结:
顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。
他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据,缺点是定义的长度不可更改造成存储
空间的浪费。
链表是通过指针来描述元素关系的一种数据结构,他可以是物理地址不连续的物理空间。
不能随即访问链表元素,必须从表头开始,一步一步搜索元素。
它的优点是:
对于数组,可以动态的改变数据的长度,分配物理空间。
建议:
在使用中如果一个数组在使用中,查询比较多,而插入,删除数据比较少,数组的长度不变时,选顺序表比较合理。
如果插入,删除,长度不定的数组,可以选链表。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序 表链 总结 实验 报告