南昌大学实验报告数据结构.docx
- 文档编号:24489673
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:16
- 大小:252.53KB
南昌大学实验报告数据结构.docx
《南昌大学实验报告数据结构.docx》由会员分享,可在线阅读,更多相关《南昌大学实验报告数据结构.docx(16页珍藏版)》请在冰豆网上搜索。
南昌大学实验报告数据结构
实验报告
实验课程:
数据结构设计菜单
学生姓名:
学号:
专业班级:
中兴班
年月日
目录
Sourcefile(源文件)sjjg.cpp
#include
#include
#include"cwxlist.h"
#include"cwxlianbiao.h"
voidf()
{intz,i;
ElemTypex,y;
sqListL1;
while
(1)
{system("cls");
printf("\n\n\n\n\n\n\n");
printf("1.初始化顺序表\n");
printf("2.求线性表长度\n");
printf("3.顺序表中插入元素\n");
printf("4.按序号取元素\n");
printf("5.顺序表中删除元素\n");
printf("6.顺序表中查找元素\n");
printf("7.顺序表元素输出运算\n");
printf("8.退出\n");
printf("请输入序号:
");
do
{scanf("%d",&z);
if(z>8||z<1)
printf("输入不合法,请重新输入:
");}
while(z>8||z<1);
if(z==8)
break;
system("cls");
switch(z)
{case1:
Initlist(&L1);break;
case2:
printf("%d\n",Getlen(&L1));for(i=0;i<1000000000;i++);break;
case3:
printf("请输入要插入的数的序号和值:
");scanf("%d%d",&i,&x);Inselem(&L1,i,x);for(i=0;i<10000000;i++);break;
case4:
printf("请输入序号:
");scanf("%d",&i);y=Getelem(&L1,i);printf("%d\n",y);for(i=0;i<1000000000;i++);break;
case5:
printf("请输入要删除的数的序号:
");scanf("%d",&i);Delelem(&L1,i);break;case6:
printf("请输入要查找的数:
");scanf("%d",&x);y=Locate(&L1,x);printf("%d\n",y);for(i=0;i<1000000000;i++);break;
case7:
Displist(&L1);for(i=0;i<1000000000;i++);break;
}
}}//顺序表菜单
voidg()
{intz,i,j;
ElemTypex;
LNode*y;
LinkListLa;
while
(1)
{system("cls");
printf("\n\n\n\n\n\n\n");
printf("1.初始化链表\n");
printf("2.求线性表长度\n");
printf("3.链表中插入元素\n");
printf("4.按序号取元素\n");
printf("5.链表中删除元素\n");
printf("6.链表中查找元素\n");
printf("7.链表元素输出运算\n");
printf("8.退出\n");
printf("请输入序号:
");
do
{scanf("%d",&z);
if(z>8||z<1)
printf("输入不合法,请重新输入:
");}
while(z>8||z<1);
if(z==8)
break;
system("cls");
switch(z)
{case1:
linitlist(&La);break;
case2:
printf("%d\n",lgetlen(La));for(j=0;j<1000000000;j++);break;
case3:
printf("请输入要插入的数的序号和值:
");scanf("%d%d",&i,&x);linselem(&La,i,x);for(j=0;j<10000000;j++);break;
case4:
printf("请输入序号:
");scanf("%d",&i);y=lgetelem(La,i);printf("%d\n",y);for(j=0;j<10000000000;j++);break;
case5:
printf("请输入要删除的数的序号:
");scanf("%d",&i);ldelelem(La,i);break;
case6:
printf("请输入要查找的数:
");scanf("%d",&x);y=llocate(La,x);printf("%d\n",y);for(j=0;j<1000000000;j++);break;
case7:
ldisplist(La);for(j=0;j<1000000000;j++);break;}
}}//链表菜单
voida()
{inty;
while
(1)
{system("cls");
printf("\n\n\n\n\n\n\n");
printf("1.顺序表\n");
printf("2.链表\n");
printf("3.退出\n");
printf("请输入序号:
");
do
{scanf("%d",&y);
if(y>3||y<1)
printf("输入不合法,请重新输入:
");}
while(y>3||y<1);
if(y==3)
break;
switch(y)
{case1:
f();break;
case2:
g();break;
}
}
}//线性表菜单
voidb()
{}//栈菜单
voidc()
{}//队列菜单
voidd()
{}//树菜单
voide()
{}//图菜单
voidmain()
{intx;
while
(1)
{system("cls");
printf("\n\n\n\n\n\n\n");
printf("1.线性表\n");
printf("2.栈\n");
printf("3.队列\n");
printf("4.树\n");
printf("5.图\n");
printf("6.退出\n");
printf("请输入序号:
");
do
{scanf("%d",&x);
if(x>6||x<1)
printf("输入不合法,请重新输入:
");}
while(x>6||x<1);
if(x==6)
break;
switch(x)
{case1:
a();break;
case2:
b();break;
case3:
c();break;
case4:
d();break;
case5:
e();break;
}
}
}//主菜单
headerfiles(页眉文件)
cwxlist.h
#defineMaxLen100
typedefintElemType;
typedefstruct{
ElemTypedata[MaxLen];
intlength;
}sqList;
sqListL;
voidInitlist(sqList*L)
{L->length=0;}//初始化顺序表
intGetlen(sqList*L)
{returnL->length;}//求线性表长度
voidInselem(sqList*L,inti,ElemTypex)
{if(i<1||i>L->length+1)
{printf("Error!
");
exit
(1);
}
if(L->length==MaxLen)
{printf("overflow!
");
exit
(1);
}
intj;
for(j=L->length+1;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i]=x;
L->length++;
}//顺序表中插入元素
ElemTypeGetelem(sqList*L,inti)
{if(i<1||i>L->length)
{printf("Error!
");
exit
(1);
}
returnL->data[i];
}//按序号取元素
voidDelelem(sqList*L,inti)
{intj;
if(i<1||i>L->length)
{printf("不存在第i个元素");
exit(0);
}
for(j=i;j<=L->length-1;j++)
L->data[j-1]=L->data[j];
L->length--;
}//顺序表中删除元素
intLocate(sqList*L,ElemTypex)
{inti;
i=0;
while(i
=x)
i++;
if(i
elsereturn0;
}//顺序表中查找元素
voidDisplist(sqList*L)
{inti;
i=0;
while(i
{++i;
printf("%d",L->data[i]);
}
printf("\n");
}//顺序表元素输出运算
cwxlianbiao.h
#defineMaxLen100
typedefintElemType;
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
LNode*head;//链表结构体定义
voidlinitlist(LinkList*L)
{*L=(LNode*)malloc(sizeof(LNode));
(*L)->next=NULL;
}//初始化链表
intlgetlen(LinkListL)
{intnum=0;
LNode*p;
p=L->next;
while(p!
=NULL)
{num++;
p=p->next;
}
return(num);
}//求链表长度
voidlinselem(LinkList*L,inti,intx)
{LNode*p,*q,*s;
intpos=1;
p=*L;
if(i<1||i>lgetlen(*L)+1)exit
(1);
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
while(pos<=i)
{q=p;p=p->next;
pos++;}
s->next=q->next;
q->next=s;
}//链表中插入元素
LNode*lgetelem(LinkListL,inti)
{LNode*p;intpos=1;
p=L->next;
if(i<1||i>lgetlen(L))
exit
(1);
while(pos
{p=p->next;
pos++;
}
returnp;
}//按序号取元素
voidldelelem(LinkListL,inti)
{intpos=1;
LNode*q=L,*p;
if(i<1||i>lgetlen(L))
exit
(1);
while(pos
{q=q->next;
pos++;
}
p=q->next;
q->next=p->next;
free(p);
}//链表中删除元素
LNode*llocate(LinkListL,intx)
{LNode*p;
p=L->next;
while(p!
=NULL&&p->data!
=x)
p=p->next;
returnp;
}//链表中查找元素
voidldisplist(LinkList&L)
{LNode*p;
p=L->next;
while(p!
=NULL)
{printf("%4d",p->data);
p=p->next;
}
printf("\n");
}//链表元素输出运算
主菜单:
输入8,不合法,重新输入1进入线性表
线性表菜单:
输入1,进入顺序表
顺序表菜单:
输入1,初始化后返回顺序表菜单
输入2,显示初始化后顺序表长度为0;
输入3,插入元素,分别输入序号123456789和对应值987654321
输入2,显示顺序表长度为9
输入7,显示顺序表中的值,如下为987654321,表明9个元素均插入
输入4,按序号取元素,输入序号3,查到值为7
输入6,查找元素,输入查找数8,显示序号2
输入5,输入要删除的数的序号9
输入7,显示顺序表的值,表明序号9对应元素1已删除
单链表菜单:
输入1,初始化后返回链表菜单
输入2,显示初始化后链表长度为0;
输入3,插入元素,分别输入序号123456789和对应值987654321
输入7,显示链表中的值,如下为987654321,表明9个元素均插入
输入2,显示链表长度为9
输入5,输入要删除的数的序号3,表明要删除数7
输入7,将链表输出表明7已被删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 实验 报告 数据结构
