信管0805 彭信儒 012158.docx

上传人:b****3 文档编号:24912842 上传时间:2023-06-02 格式:DOCX 页数:29 大小:19.27KB
下载 相关 举报
信管0805 彭信儒 012158.docx_第1页
第1页 / 共29页
信管0805 彭信儒 012158.docx_第2页
第2页 / 共29页
信管0805 彭信儒 012158.docx_第3页
第3页 / 共29页
信管0805 彭信儒 012158.docx_第4页
第4页 / 共29页
信管0805 彭信儒 012158.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

信管0805 彭信儒 012158.docx

《信管0805 彭信儒 012158.docx》由会员分享,可在线阅读,更多相关《信管0805 彭信儒 012158.docx(29页珍藏版)》请在冰豆网上搜索。

信管0805 彭信儒 012158.docx

信管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<data<<"";

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<data<<"";

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<data<<"";

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<<"请选择您要进行的操作:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1