信管0805 彭信儒 012158.docx
- 文档编号:24912842
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:29
- 大小:19.27KB
信管0805 彭信儒 012158.docx
《信管0805 彭信儒 012158.docx》由会员分享,可在线阅读,更多相关《信管0805 彭信儒 012158.docx(29页珍藏版)》请在冰豆网上搜索。
信管0805彭信儒012158
北京信息科技大学
信息管理学院
实验报告
课程名称数据结构
实验项目数据结构中的线性结构
实验仪器PC机一台
专业信息管理信息系统
班级/学号信管0805|2008012158
学生姓名彭信儒
实验日期2009年10月
实验地点小营计算中心
成绩
指导教师王晓蓉
北京信息科技大学
信息管理学院
(数据结构)实验报告
实验课程名称:
数据结构专业:
信息管理信息系统班级:
信管0805学号:
2008012158姓名:
彭信儒
实验名称
线性结构
实验地点
小营计算中心
实验时间
8机时
1.实验目的:
掌握线性结构中的线性表、栈和队列的类型定义、存储形式(线性存储和链式存储),熟练掌握相关类型的特征及主要操作实现算法。
能根据题目要求完成程序设计并能正常运行。
2.实验内容:
1.用顺序表完成一个班级的10个学生的信息(包括:
学号、姓名、性别、入学成绩)管理:
能够显示、增加、删除、查询学生的指定信息(如:
姓名或成绩)。
2.利用单向链表完成对一组(如5个)整型数据的信息管理:
能够增加、删除、修改(按位置或值)指定的数据结点。
3.利用单向链表完成将两个有序线性表合并为新的有序单向链表。
4.利用顺序栈完成初始化栈、入栈、出栈和显示栈内元素的操作。
5.利用链栈完成初始化栈、入栈、出栈和显示栈内元素的操作。
6.利用链队列完成初始化队列、入队、出队和显示队内元素的操作。
3.实验要求:
上机前认真阅读实验内容,在理解的基础上写出所有程序代码。
应尽量使用注释说明、使用缩进格式以增加程序的可读性。
4.实验准备:
硬件:
PC机一台
软件:
VC6.0
数据结构实验模板
5.实验过程:
1.
#include
usingnamespacestd;
structstudent
{
intnum;
charname[20];
charsex[10];
intchj;
};
typedefstruct
{
student*elem;
intlength;
}sqlist;
voidmenu(sqlist&l);
voidshow(sqlist&l);
voidadd(sqlist&l);
voiddel(sqlist&l);
voidch(sqlist&l);
intmain()
{
sqlistl;
student*p;
l.elem=(student*)malloc(100*sizeof(student));
p=l.elem;
l.length=0;
for(inti=1;i<=2;i++)
{
cout<<"请输入第"<
"< cin>>p->num; cin>>p->name; cin>>p->sex; cin>>p->chj; p++; l.length++; } menu(l); return0; } voidmenu(sqlist&l) { inti; charj; cout<<"请选择您要进行的操作: 1.显示2.增加3.删除4.查询"< cin>>i; if(i==1) { show(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } if(i==2) { add(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } if(i==3) { del(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } if(i==4) { ch(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } } voidshow(sqlist&l) { for(inti=1;i<=l.length;i++) { cout<<"第"< "< cout<<"学号: "< cout<<"姓名: "< cout<<"性别: "< cout<<"成绩: "< } } voidadd(sqlist&l) { inti; student*s,*p; cout<<"请输入元素的插入位置: "< cin>>i; p=&(l.elem[i-1]); for(s=&(l.elem[l.length-1]);s>=p;--s) { *(s+1)=*s; } cout<<"请输入学生的信息(学号、姓名、性别、成绩): "< cin>>p->num; cin>>p->name; cin>>p->sex; cin>>p->chj; p=s; l.length++; } voiddel(sqlist&l) { inti; student*p,*q; cout<<"请输入要删除的元素位置: "< cin>>i; p=&(l.elem[i-1]); q=l.elem+l.length-1; for(++p;p<=q;++p) { *(p-1)=*p; } l.length--; } voidch(sqlist&l) { intx; cout<<"请输入要查询的学生学号: "< cin>>x; for(inti=1;i<=l.length;i++) { if(l.elem[i-1].num==x) { cout<<"被查询同学的信息: "< cout<<"学号: "< cout<<"姓名: "< cout<<"性别: "< cout<<"成绩: "< } } } 2. #include usingnamespacestd; typedefstructlnode { intdata; structlnode*next; }lnode,*linklist; voidmenu(linklist&l); voidshow(linklist&l); voidadd(linklist&l); voiddel(linklist&l); voidxg(linklist&l); intmain() { linklistl,m,n; intx,e; l=(linklist)malloc(sizeof(lnode)); l->next=NULL; n=l; cout<<"请输入要输入的数的个数: "; cin>>x; for(inti=1;i<=x;i++) { cout<<"请输入第"< "; cin>>e; m=(linklist)malloc(sizeof(lnode)); m->data=e; n->next=m; m->next=NULL; n=n->next; } menu(l); return0; } voidmenu(linklist&l) { inti; charj; cout<<"请选择您要进行的操作: 1.显示2.增加3.删除4.修改"< cin>>i; if(i==1) { show(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } if(i==2) { add(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } if(i==3) { del(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } if(i==4) { xg(l); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(l); } if(j=='n') { system("cls"); } } } voidshow(linklist&l) { linklistp; p=l->next; while(p) { cout< p=p->next; } cout< } voidadd(linklist&l) { linklistp,s; inte,i,j=0; cout<<"请输入要添加的数的位置: "; cin>>i; p=l; while(p&&j { p=p->next; j++; } cout<<"请输入要添加的数: "; cin>>e; s=(linklist)malloc(sizeof(lnode)); s->data=e; s->next=p->next; p->next=s; } voiddel(linklist&l) { linklistp,q; inti,j=0; cout<<"请输入要删除的数的位置: "; cin>>i; p=l; while(p->next&&j { p=p->next; j++; } q=p->next; p->next=q->next; free(q); } voidxg(linklist&l) { linklistp; inte,i,j=0; cout<<"请输入要修改的数的位置: "; cin>>i; p=l; while(p->next&&j<=i-1) { p=p->next; j++; } cout<<"请输入修改的数: "; cin>>e; p->data=e; } 3. #include usingnamespacestd; typedefstructlnode { intdata; structlnode*next; }lnode,*linklist; intmain() { linklistla,lb,lc,x,y,p,q; linklistpa,pb,pc; linklists; intm,n,e,f; la=(linklist)malloc(sizeof(lnode)); la->next=NULL; lb=(linklist)malloc(sizeof(lnode)); lb->next=NULL; lc=(linklist)malloc(sizeof(lnode)); lc->next=NULL; x=la; cout<<"请输入要输入的数的个数: "; cin>>m; for(inti=1;i<=m;i++) { cout<<"请输入第"< "; cin>>e; y=(linklist)malloc(sizeof(lnode)); y->data=e; x->next=y; y->next=NULL; x=x->next; } p=lb; cout<<"请输入要输入的数的个数: "; cin>>n; for(intj=1;j<=n;j++) { cout<<"请输入第"< "; cin>>f; q=(linklist)malloc(sizeof(lnode)); q->data=f; p->next=q; q->next=NULL; p=p->next; } pa=la->next;pb=lb->next;lc=pc=la; while(pa&&pb) { if(pa->data<=pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } if(pa) { pc->next=pa; } else { pc->next=pb; } free(lb); s=lc->next; while(s) { cout< s=s->next; } cout< return0; } 4. #include usingnamespacestd; typedefstruct { int*base; int*top; intstacksize; }sqstack; voidmenu(sqstack&s); voidadd(sqstack&s); voiddel(sqstack&s); voidshow(sqstack&s); intmain() { sqstacks; intx,e; s.base=(int*)malloc(100*sizeof(int)); s.top=s.base; s.stacksize=100; cout<<"请输入元素个数: "; cin>>x; for(inti=1;i<=x;i++) { cout<<"请输入第"< "; cin>>e; *s.top=e; s.top++; } menu(s); return0; } voidmenu(sqstack&s) { inti; charj; cout<<"请选择您要进行的操作: 1.增加2.删除3.显示"< cin>>i; if(i==1) { add(s); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(s); } if(j=='n') { system("cls"); } } if(i==2) { del(s); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(s); } if(j=='n') { system("cls"); } } if(i==3) { show(s); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(s); } if(j=='n') { system("cls"); } } } voidadd(sqstack&s) { inte; cout<<"请输入要添加的元素: "; cin>>e; *s.top=e; s.top++; } voiddel(sqstack&s) { if(s.base==s.top) { cout<<"抱歉,此栈已为空栈。 "< } else { s.top--; } } voidshow(sqstack&s) { int*p; p=s.top; while(p! =s.base) { p--; cout<<*p<<""; } cout< } 5. #include usingnamespacestd; typedefstructnode { intdata; structnode*next; }node,*linkstack; voidmenu(linkstack&s); voidadd(linkstack&s); voiddel(linkstack&s); voidshow(linkstack&s); intmain() { linkstacks,p; intx,e; s=NULL; cout<<"请输入元素个数: "; cin>>x; for(inti=1;i<=x;i++) { cout<<"请输入第"< "; cin>>e; p=(linkstack)malloc(sizeof(node)); p->data=e; p->next=s; s=p; } menu(s); return0; } voidmenu(linkstack&s) { inti; charj; cout<<"请选择您要进行的操作: 1.增加2.删除3.显示"< cin>>i; if(i==1) { add(s); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(s); } if(j=='n') { system("cls"); } } if(i==2) { del(s); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(s); } if(j=='n') { system("cls"); } } if(i==3) { show(s); cout<<"是否进行其他操作? (y/n)"< cin>>j; if(j=='y') { menu(s); } if(j=='n') { system("cls"); } } } voidadd(linkstack&s) { inte; linkstackp; cout<<"请输入要添加的元素: "; cin>>e; p=(linkstack)malloc(sizeof(node)); p->data=e; p->next=s; s=p; } voiddel(linkstack&s) { linkstackp; if(s==NULL) { cout<<"抱歉,此链栈已为空栈。 "< } p=s; s=p->next; free(p); } voidshow(linkstack&s) { linkstackp; p=s; while(p) { cout< p=p->next; } cout< } 6. #include usingnamespacestd; typedefstructqnode { intdata; structqnode*next; }qnode,*queueptr; typedefstruct { queueptrfront; queueptrrear; }linkqueue; voidmenu(linkqueue&Q); voidadd(linkqueue&Q); voiddel(linkqueue&Q); voidshow(linkqueue&Q); intmain() { linkqueueQ; queueptrp; intx,e; Q.front=Q.rear=(queueptr)malloc(sizeof(qnode)); Q.front->next=NULL; cout<<"请输入元素个数: "; cin>>x; for(inti=1;i<=x;i++) { cout<<"请输入第"< "; cin>>e; p=(queueptr)malloc(sizeof(qnode)); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; } menu(Q); return0; } voidmenu(linkqueue&Q) { inti; charj; cout<<"请选择您要进行的操作:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信管0805 彭信儒 012158 0805