合肥工业大学数据结构试验一实验报告汇编.docx

上传人:b****5 文档编号:4827257 上传时间:2022-12-10 格式:DOCX 页数:20 大小:52.87KB
下载 相关 举报
合肥工业大学数据结构试验一实验报告汇编.docx_第1页
第1页 / 共20页
合肥工业大学数据结构试验一实验报告汇编.docx_第2页
第2页 / 共20页
合肥工业大学数据结构试验一实验报告汇编.docx_第3页
第3页 / 共20页
合肥工业大学数据结构试验一实验报告汇编.docx_第4页
第4页 / 共20页
合肥工业大学数据结构试验一实验报告汇编.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

合肥工业大学数据结构试验一实验报告汇编.docx

《合肥工业大学数据结构试验一实验报告汇编.docx》由会员分享,可在线阅读,更多相关《合肥工业大学数据结构试验一实验报告汇编.docx(20页珍藏版)》请在冰豆网上搜索。

合肥工业大学数据结构试验一实验报告汇编.docx

合肥工业大学数据结构试验一实验报告汇编

 

计算机与信息学院

数据结构实验报告

 

专业班级

学生姓名及学号

课程教学班号

任课教师

实验指导教师

实验地点

2015~2016学年第2学期

 

说明

实验报告是关于实验教学内容、过程及效果的记录和总结,因此,应注意以下事项和要求:

1.每个实验单元在4页的篇幅内完成一份报告。

“实验单元”指按照实验指导书规定的实验内容。

若篇幅不够,可另附纸。

2、各实验的预习部分的内容是进入实验室做实验的必要条件,请按要求做好预习。

3.实验报告要求:

书写工整规范,语言表达清楚,数据和程序真实。

理论联系实际,认真分析实验中出现的问题与现象,总结经验。

4.参加实验的每位同学应独立完成实验报告的撰写,其中程序或相关的设计图纸也可以采用打印等方式粘贴到报告中。

严禁抄袭或拷贝,否则,一经查实,按作弊论取,并取消理论课考试资格。

5.实验报告作为评定实验成绩的依据。

实验序号及名称:

实验一单链表实验

实验时间∶2016年5月

预习内容

一、实验目的和要求∶

(1)理解线性表的链式存储结构。

(2)熟练掌握动态链表结构及有关算法的设计。

(3)根据具体问题的需要,设计出合理的表示数据的链表结构,设计相关算法。

二、实验任务∶

说明1:

本次实验中的链表结构均为带头结点的单链表。

说明2:

为使实验程序简洁直观,下面的部分实验程序中将所需要的函数以调用库函数的形式给出,并假设将库函数放在程序文件“linklist.h”中,同时假设该库函数文件中定义了链表结构中的指针类型为link,结点类型为node,并定义了部分常用运算。

例如构建链表、以某种方式显示链表、从文件中读入一个链表、跟踪访问链表结点等。

各运算的名称较为直观,并有相应的注释,因而易于理解和实现。

三、实验准备方案,包括以下内容:

(硬件类实验:

实验原理、实验线路、设计方案等)

(软件类实验:

所采用的核心方法、框架或流程图及程序清单)

实验准备方案:

构建库函数:

定义了链表结构中的指针类型为link,结点类型为node,并定义了部分常用运算,如构建链表,显示链表,读取链表,访问链表等;

流程:

实验内容

一、实验用仪器、设备:

个人计算机

C-free5.0

二、实验内容与步骤(过程及数据记录):

<1>求链表中第i个结点的指针(函数),若不存在,则返回NULL。

实验测试数据基本要求:

第一组数据:

链表长度n≥10,i分别为5,n,0,n+1,n+2

第二组数据:

链表长度n=0,i分别为0,2

node*list:

:

address(inti)

{

node*p=head->next;

intn=1;

while(n!

=i&&p!

=NULL)

{

p=p->next;

n++;

}

if(p!

=NULL)returnp;

elsereturnNULL;

}

第一组数据

第二组数据

 

<2>在第i个结点前插入值为x的结点。

实验测试数据基本要求:

第一组数据:

链表长度n≥10,x=100,i分别为5,n,n+1,0,1,n+2

第二组数据:

链表长度n=0,x=100,i=5

errorcodelist:

:

insert(constinti,constintx)

{

node*p;

p=head;

intn=1;

while(n!

=i&&p!

=NULL)

{

p=p->next;

n++;

}

if(i<1||i>length()+1)returnrangeerror;

node*s=newnode;

s->data=x;

s->next=p->next;

p->next=s;

count++;

returnsuccess;

}

<3>删除链表中第i个元素结点。

实验测试数据基本要求:

第一组数据:

链表长度n≥10,i分别为5,n,1,n+1,0

第二组数据:

链表长度n=0,i=5

errorcodelist:

:

delete_ele(constinti)

{

node*p;

p=head;

intn=1;

while(n!

=i&&p!

=NULL)

{

p=p->next;

n++;

}

if(i<1||i>count)returnrangeerror;

node*u;

u=p->next;

p->next=u->next;

count--;

deleteu;

returnsuccess;

}

<4>在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性。

实验测试数据基本要求:

链表元素为(10,20,30,40,50,60,70,80,90,100),

x分别为25,85,110和8

errorcodelist:

:

orderinsert(intx)

{

node*p=head;

intn=1;

while(p->next!

=NULL)

{

if(p->next->datanext;

elsebreak;

}

node*u=newnode;

u->data=x;

u->next=p->next;

p->next=u;

count++;

returnsuccess;

}

<5>将单链表L中的奇数项和偶数项结点分解开,并分别连成一个带头结点的单链表,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果,以便对照求解结果。

实验测试数据基本要求:

第一组数据:

链表元素为(1,2,3,4,5,6,7,8,9,10,20,30,40,50,60)

第二组数据:

链表元素为(10,20,30,40,50,60,70,80,90,100)

voidseparate(list&A,list&B,list&C){

node*LA;node*LB;node*p;node*q;node*u;node*s;

LA=A.get_head();LB=B.get_head();

q=LA;p=LA->next;s=LB;

if(p->data%2==0){

u=p;p=p->next;q->next=p;

s->next=u;

s=s->next;

}

else{

p=p->next;q=q->next;

}

}

 

<6>求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。

实验测试数据基本要求:

第一组

第一个链表元素为(1,3,6,10,15,16,17,18,19,20)

第二个链表元素为(1,2,3,4,5,6,7,8,9,10,18,20,30)

第二组

第一个链表元素为(1,3,6,10,15,16,17,18,19,20)

第二个链表元素为(2,4,5,7,8,9,12,22)

第三组

第一个链表元素为()

第二个链表元素为(1,2,3,4,5,6,7,8,9,10)

bingji(listA,listB,list&C){

node*LA;node*LB;node*LC;node*a;node*b;

LC=C.get_head();

LA=A.get_head();LB=B.get_head();

a=LA->next;b=LB->next;

while(a!

=NULL&&b!

=NULL){

if(a->datadata)a=a->next;

elseif(a->data>b->data)b=b->next;

else{

node*c=newnode;

c->data=a->data;

LC->next=c;LC=c;

C.count++;

a=a->next;b=b->next;

}

LC->next=NULL;

}

 

CPP文件附加:

 

#include

#include

enumerror_code{success,arrange_error};

typedefstructnode{

intdata;

node*next;

}node;

classlist{

public:

list();

intlength()const;

~list(){};

node*get_element(intlocate)const;

node*locate(constintx)const;

error_codecharu(constinti);

error_codeinsert(constintlocate,constinti);

error_codedelete_element(constinti);

node*get_head(){returnhead;}

voidseparate(list&A,list&B);

intbingji(listA,listB,list&C);

voidcreate_R();

voidlist:

:

show();

private:

intcount;

node*head;

node*rear;

};

list:

:

list(){

head=newnode;

head->next=NULL;

count=0;

}

intlist:

:

length()const{

node*p=head->next;

intcount=0;

while(p!

=NULL){

count++;

p=p->next;

}

returncount;

}

voidlist:

:

create_R(){

intx;

cout<<"请输入链表中的数值,按-1后结束创建"<

cin>>x;

node*rear=head;

while(x!

=-1){

count++;

node*s=newnode;

s->data=x;

rear->next=s;

rear=s;

rear->next=NULL;

cin>>x;

}

}

node*list:

:

get_element(intlocate)const{

if(count==0)return0;

else{

if(locate<=0||locate>=count)

return0;

else{

node*p=head;intk=0;

while(p!

=NULL&&k

p=p->next;k++;

}

returnp;

}

}

}

voidlist:

:

show(){

node*p=head;

while(p!

=NULL){

cout<data<<"\t";

p=p->next;

}

}

error_codelist:

:

insert(constintlocate,constinti){

if(count==0){

node*s=newnode;

s->data=i;

s->next=NULL;

head->next=s;

rear=s;

count=1;

returnsuccess;

}

else{

if(locate<1||locate>count+1)

returnarrange_error;

else{

node*p=head;intj=0;

while(j!

=locate-1&&p!

=NULL){

p=p->next;j++;}

node*s=newnode;

s->data=i;

s->next=p->next;

p->next=s;

count++;

returnsuccess;

}

}

}

error_codelist:

:

charu(constinti){

node*p=head;

while(p!

=NULL&&p->next!

=NULL){

if(p->data<=i&&i<=p->next->data){

node*s=newnode;

s->data=i;

s->next=p->next;

p->next=s;

count++;}

elsep=p->next;}

if(p->next==NULL){

node*s=newnode;

s->data=i;

s->next=NULL;

p->next=s;

count++;

}

returnsuccess;

}

error_codelist:

:

delete_element(constinti){

node*p=head;intj=0;

while(j!

=i-1&&p!

=NULL){

p=p->next;j++;

}

if(i<1||i>count)

returnarrange_error;

node*u=newnode;

u=p->next;

p->next=u->next;

deleteu;

count--;

returnsuccess;

}

voidseparate(list&A,list&B){

node*LA;node*LB;node*p;node*q;node*u;node*s;

LA=A.get_head();LB=B.get_head();

q=LA;p=LA->next;s=LB;

while(p!

=NULL){

if(p->data%2==0){

u=p;p=p->next;q->next=p;

s->next=u;

s=s->next;

}

else{

p=p->next;q=q->next;

}

}

}

voidseparate(list&A,list&B,list&C){

node*LA;node*LB;node*p;node*q;node*u;node*s;

LA=A.get_head();LB=B.get_head();

q=LA;p=LA->next;s=LB;

if(p->data%2==0){

u=p;p=p->next;q->next=p;

s->next=u;

s=s->next;

}

else{

p=p->next;q=q->next;

}

}

intlist:

:

bingji(listA,listB,list&C){

node*LA;node*LB;node*LC;node*a;node*b;

LC=C.get_head();

LA=A.get_head();LB=B.get_head();

a=LA->next;b=LB->next;

while(a!

=NULL&&b!

=NULL){

if(a->datadata)a=a->next;

elseif(a->data>b->data)b=b->next;

else{

node*c=newnode;

c->data=a->data;

LC->next=c;LC=c;

C.count++;

a=a->next;b=b->next;

}

LC->next=NULL;

}

returnsuccess;}

intmain()

{

intchoice;

inti;

listA;

listB;

listC;

do

{//显示主菜单

cout<<"\n";

cout<<"\n";

cout<<"主菜单\n";

cout<<"\n";

cout<<"***********************************************"<

cout<<"\n";

cout<<"1-创建链表2-求第i个节点指针\n";

cout<<"\n";

cout<<"3-在第i个节点前插入一个数4-删除链表中的第i个节点\n";

cout<<"\n";

cout<<"5-分离链表6-求公共元素\n";

cout<<"\n";

cout<<"7-插入一个数8-退出\n";

cout<<"\n";

cout<<"***********************************************"<

cout<<"Enterchoice:

";

cin>>choice;

switch(choice)

{

case1:

{

A.create_R();

B.create_R();

A.length();

B.length();

break;

}

case2:

{

intk;

cout<<"qingshuruk\n";

cin>>k;

if(A.get_element(k)==NULL)

cout<

else

cout<data<

break;

}

case3:

{

A.length();

inta,b;

cout<<"请输入a,b\n";

cin>>a>>b;

A.insert(a,b);

A.show();

break;}

case4:

{

A.length();

inti;

cout<<"请输入一个值\n";

cin>>i;

if(i==0||i>A.length())

cout<<"NULL\n";

else

A.delete_element(i);

A.show();

break;

}

case5:

{

A.show();

separate(A,B);

A.show();

B.show();

}

case6:

{

A.show();

B.show();

A.bingji(A,B,C);

C.show();

}

case7:

{inti;

cout<<"请输入一个数\n";

cin>>i;

A.charu(i);

A.show();

}

case8:

{

cout<<"结束运行"<

break;

(一)上海的经济环境对饰品消费的影响}

就算你买手工艺品来送给朋友也是一份意义非凡的绝佳礼品哦。

而这一份礼物于在工艺品店买的现成的礼品相比,就有价值意义,虽然它的成本比较低但它毕竟它是你花心血花时间去完成的。

就像现在最流行的针织围巾,为何会如此深得人心,更有人称它为温暖牌绝大部分多是因为这个原因哦。

而且还可以锻炼你的动手能力,不仅实用还有很大的装饰功用哦。

}

木质、石质、骨质、琉璃、藏银……一颗颗、一粒粒、一片片,都浓缩了自然之美,展现着千种风情、万种诱惑,与中国结艺的朴实形成了鲜明的对比,代表着欧洲贵族风格的饰品成了他们最大的主题。

}while(choice!

=7);

return0;

}

(一)创业机会分析

众上所述,我们认为:

我们的创意小屋计划或许虽然会有很多的挑战和困难,但我们会吸取和借鉴“漂亮女生”和“碧芝”的成功经验,在产品的质量和创意上多下工夫,使自己的产品能领导潮流,领导时尚。

在它们还没有打入学校这个市场时,我们要巩固我们的学生市场,制作一些吸引学生,又有使学生能接受的价格,勇敢的面对它们的挑战,使自己立于不败之地。

手工艺制品是我国一种传统文化的象征,它品种多样,方式新颖,制作简单,深受广大学生朋友的喜欢。

当今大学生的消费行为表现在追求新颖,追求时尚。

追求个性,表现自我的消费趋向:

购买行为有较强的感情色彩,比起男生热衷于的网络游戏,极限运动,手工艺制品更得女生的喜欢。

 

还有一点就是beadwork公司在“碧芝自制饰品店”内设立了一个完全的弹性价格空间:

选择饰珠的种类和多少是由顾客自己掌握,所以消费者可以根据自己的消费能力进行取舍;此外由于是顾客自己制作,所以从原料到成品的附加值就可以自己享用。

(5)资金问题

标题:

上海发出通知为大学生就业—鼓励自主创业,灵活就业2004年3月17日

关于DIY手工艺制品的消费调查

 

 

三、实验结果分析、思考题解答∶

 

四、感想、体会、建议∶

 

实验成绩∶

指导教师签名:

年月日

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

当前位置:首页 > 高等教育 > 军事

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

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