1、信管0805 彭信儒 012158北京信息科技大学信息管理学院实 验 报 告课程名称 数据结构 实验项目 数据结构中的线性结构 实验仪器 PC机一台 专 业 信息管理信息系统 班级/学号 信管0805|2008012158 学生姓名 彭信儒 实验日期 2009年10月 实验地点 小营计算中心 成 绩 指导教师 王晓蓉 北京信息科技大学信息管理学院(数据结构)实验报告实验课程名称: 数据结构 专业: 信息管理信息系统 班级:信管0805学号:2008012158姓名:彭信儒 实验名称线性结构实验地点小营计算中心实验时间8机时1. 实验目的:掌握线性结构中的线性表、栈和队列的类型定义、存储形式(线
2、性存储和链式存储),熟练掌握相关类型的特征及主要操作实现算法。能根据题目要求完成程序设计并能正常运行。2. 实验内容:1 用顺序表完成一个班级的10个学生的信息(包括:学号、姓名、性别、入学成绩)管理:能够显示、增加、删除、查询学生的指定信息(如:姓名或成绩)。2 利用单向链表完成对一组(如5个)整型数据的信息管理:能够增加、删除、修改(按位置或值)指定的数据结点。3 利用单向链表完成将两个有序线性表合并为新的有序单向链表。4 利用顺序栈完成初始化栈、入栈、出栈和显示栈内元素的操作。5 利用链栈完成初始化栈、入栈、出栈和显示栈内元素的操作。6 利用链队列完成初始化队列、入队、出队和显示队内元素
3、的操作。3. 实验要求:上机前认真阅读实验内容,在理解的基础上写出所有程序代码。应尽量使用注释说明、使用缩进格式以增加程序的可读性。4. 实验准备:硬件:PC机一台软件:VC6.0数据结构实验模板5. 实验过程:1.#includeusing namespace std;struct student int num; char name20; char sex10; int chj;typedef struct student *elem; int length;sqlist;void menu(sqlist &l);void show(sqlist &l);void add(sqlist &
4、l);void del(sqlist &l);void ch(sqlist &l);int main() sqlist l; student *p; l.elem=(student *)malloc(100*sizeof(student); p=l.elem; l.length=0; for(int i=1;i=2;i+) cout请输入第i个学生的信息(学号、姓名、性别、成绩):p-num; cinp-name; cinp-sex; cinp-chj; p+; l.length+; menu(l); return 0;void menu(sqlist &l) int i; char j; c
5、out请选择您要进行的操作:1.显示 2.增加 3.删除 4.查询i; if(i=1) show(l); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); if(i=2) add(l); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); if(i=3) del(l); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); if(i=4) ch(l); cout是否进行其他操作?(y/n)j; if
6、(j=y) menu(l); if(j=n) system(cls); void show(sqlist &l) for(int i=1;i=l.length;i+) cout第i个学生的信息:endl; cout学号:l.elemi-1.numendl; cout姓名:l.elemi-1.nameendl; cout性别:l.elemi-1.sexendl; cout成绩:l.elemi-1.chjendl; void add(sqlist &l) int i; student *s,*p; cout请输入元素的插入位置:i; p=&(l.elemi-1); for(s=&(l.eleml.
7、length-1);s=p;-s) *(s+1)=*s; cout请输入学生的信息(学号、姓名、性别、成绩):p-num; cinp-name; cinp-sex; cinp-chj; p=s; l.length+;void del(sqlist &l) int i; student *p,*q; cout请输入要删除的元素位置:i; p=&(l.elemi-1); q=l.elem+l.length-1; for(+p;p=q;+p) *(p-1)=*p; l.length-;void ch(sqlist &l) int x; cout请输入要查询的学生学号:x; for(int i=1;i
8、=l.length;i+) if(l.elemi-1.num=x) cout被查询同学的信息:endl; cout学号:l.elemi-1.numendl; cout姓名:l.elemi-1.nameendl; cout性别:l.elemi-1.sexendl; cout成绩:l.elemi-1.chjendl; 2.#includeusing namespace std;typedef struct lnode int data; struct lnode *next;lnode,*linklist;void menu(linklist &l);void show(linklist &l);
9、void add(linklist &l);void del(linklist &l);void xg(linklist &l);int main() linklist l,m,n; int x,e; l=(linklist)malloc(sizeof(lnode); l-next=NULL; n=l; coutx; for(int i=1;i=x;i+) cout请输入第ie; m=(linklist)malloc(sizeof(lnode); m-data=e; n-next=m; m-next=NULL; n=n-next; menu(l); return 0;void menu(lin
10、klist &l) int i; char j; cout请选择您要进行的操作:1.显示 2.增加 3.删除 4.修改i; if(i=1) show(l); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); if(i=2) add(l); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); if(i=3) del(l); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); if(i=4) xg(l
11、); cout是否进行其他操作?(y/n)j; if(j=y) menu(l); if(j=n) system(cls); void show(linklist &l) linklist p; p=l-next; while(p) coutdatanext; coutendl;void add(linklist &l) linklist p,s; int e,i,j=0; couti; p=l; while(p&jnext; j+; coute; s=(linklist)malloc(sizeof(lnode); s-data=e; s-next=p-next; p-next=s;void d
12、el(linklist &l) linklist p,q; int i,j=0; couti; p=l; while(p-next&jnext; j+; q=p-next; p-next=q-next; free(q);void xg(linklist &l) linklist p; int e,i,j=0; couti; p=l; while(p-next&jnext; j+; coute; p-data=e;3.#includeusing namespace std;typedef struct lnode int data; struct lnode *next;lnode,*linkl
13、ist;int main() linklist la,lb,lc,x,y,p,q; linklist pa,pb,pc; linklist s; int m,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; coutm; for(int i=1;i=m;i+) cout请输入第ie; y=(linklist)malloc(siz
14、eof(lnode); y-data=e; x-next=y; y-next=NULL; x=x-next; p=lb; coutn; for(int j=1;j=n;j+) cout请输入第jf; 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-datadata) pc-next=pa; pc=pa; pa=pa-next; else pc-next=pb; pc=pb; pb=pb
15、-next; if(pa) pc-next=pa; else pc-next=pb; free(lb); s=lc-next; while(s) coutdatanext; coutendl; return 0;4.#includeusing namespace std;typedef struct int *base; int *top; int stacksize;sqstack;void menu(sqstack &s);void add(sqstack &s);void del(sqstack &s);void show(sqstack &s);int main() sqstack s
16、; int x,e; s.base=(int *)malloc(100 *sizeof(int); s.top=s.base; s.stacksize=100; coutx; for(int i=1;i=x;i+) cout请输入第ie; *s.top=e; s.top+; menu(s); return 0;void menu(sqstack &s) int i; char j; cout请选择您要进行的操作:1.增加 2.删除 3.显示i; if(i=1) add(s); cout是否进行其他操作?(y/n)j; if(j=y) menu(s); if(j=n) system(cls);
17、if(i=2) del(s); cout是否进行其他操作?(y/n)j; if(j=y) menu(s); if(j=n) system(cls); if(i=3) show(s); cout是否进行其他操作?(y/n)j; if(j=y) menu(s); if(j=n) system(cls); void add(sqstack &s) int e; coute; *s.top=e; s.top+;void del(sqstack &s) if(s.base=s.top) cout抱歉,此栈已为空栈。endl; else s.top-; void show(sqstack &s) int
18、*p; p=s.top; while(p!=s.base) p-; cout*p ; coutendl;5.#includeusing namespace std;typedef struct node int data; struct node *next;node,*linkstack;void menu(linkstack &s);void add(linkstack &s);void del(linkstack &s);void show(linkstack &s);int main() linkstack s,p; int x,e; s=NULL; coutx; for(int i=
19、1;i=x;i+) cout请输入第ie; p=(linkstack)malloc(sizeof(node); p-data=e; p-next=s; s=p; menu(s); return 0;void menu(linkstack &s) int i; char j; cout请选择您要进行的操作:1.增加 2.删除 3.显示i; if(i=1) add(s); cout是否进行其他操作?(y/n)j; if(j=y) menu(s); if(j=n) system(cls); if(i=2) del(s); cout是否进行其他操作?(y/n)j; if(j=y) menu(s); i
20、f(j=n) system(cls); if(i=3) show(s); cout是否进行其他操作?(y/n)j; if(j=y) menu(s); if(j=n) system(cls); void add(linkstack &s) int e; linkstack p; coute; p=(linkstack)malloc(sizeof(node); p-data=e; p-next=s; s=p;void del(linkstack &s) linkstack p; if(s=NULL) cout抱歉,此链栈已为空栈。next; free(p);void show(linkstack
21、&s) linkstack p; p=s; while(p) coutdatanext; coutendl;6.#includeusing namespace std;typedef struct qnode int data; struct qnode *next;qnode,*queueptr;typedef struct queueptr front; queueptr rear;linkqueue;void menu(linkqueue &Q);void add(linkqueue &Q);void del(linkqueue &Q);void show(linkqueue &Q);i
22、nt main() linkqueue Q; queueptr p; int x,e; Q.front=Q.rear=(queueptr)malloc(sizeof(qnode); Q.front-next=NULL; coutx; for(int i=1;i=x;i+) cout请输入第ie; p=(queueptr)malloc(sizeof(qnode); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; menu(Q); return 0;void menu(linkqueue &Q) int i; char j; cout请选择您要进行的操作:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1