广东工业大学数据结构实验报告12届范文.docx

上传人:b****7 文档编号:10420623 上传时间:2023-02-11 格式:DOCX 页数:37 大小:452.46KB
下载 相关 举报
广东工业大学数据结构实验报告12届范文.docx_第1页
第1页 / 共37页
广东工业大学数据结构实验报告12届范文.docx_第2页
第2页 / 共37页
广东工业大学数据结构实验报告12届范文.docx_第3页
第3页 / 共37页
广东工业大学数据结构实验报告12届范文.docx_第4页
第4页 / 共37页
广东工业大学数据结构实验报告12届范文.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

广东工业大学数据结构实验报告12届范文.docx

《广东工业大学数据结构实验报告12届范文.docx》由会员分享,可在线阅读,更多相关《广东工业大学数据结构实验报告12届范文.docx(37页珍藏版)》请在冰豆网上搜索。

广东工业大学数据结构实验报告12届范文.docx

广东工业大学数据结构实验报告12届范文

广东工业大学数据结构实验报告

(1)

学院:

自动化专业:

12级物联网3班

姓名:

xxx学号:

xxx老师:

张小波

实验日期:

2014年6月21日实验地点:

实二203成绩评定:

实验题目:

求一个正整数的各位数字之和

1、实验目的

求一个正整数的各位数字之和。

2、实验软件环境

1.计算机每人一台。

2.软件:

VisualStudio2012

3、实验内容

#include

intfunc(intnum)

{

ints=0;

do

{

s+=num%10;

num/=10;

}while(num);

return(s);

}

voidmain()

{

intn;

printf("输入一个整数:

");

scanf("%d",&n);

printf("各位数字之和:

%d\n",func(n));

printf("\n");

}

4、实验结果和分析

当输入一个整数的时候,得出的是该整数的所有数字的和

5、实验心得体会

本实验过程中,感觉能用简单的方法实现程序就应该用简单的,一开始我用了多个for循环,感觉没必要,就用了do-while循环,因此保持程序的简洁,精悍是最应该的,过于冗杂的程序不仅臃肿,而且难以分析,分享。

广东工业大学数据结构实验报告

(2)

学院:

自动化专业:

12级物联网3班

姓名:

xxx学号:

xxx老师:

张小波

实验日期:

2014年6月21日实验地点:

实二203成绩评定:

实验题目:

求两个多项式的相加运算

一、实验目的

熟悉并学会使用多项式的表示方法以及计算方法

二、实验软件环境

1.计算机每人一台。

2.软件:

VisualStudio2012

三、实验内容

#include

#include

#defineMAX20//多项式最多项数

typedefstruct//定义存放多项式的数组类型

{

doublecoef;//系数

intexp;//指数

}PolyArray[MAX];

typedefstructpnode//定义单链表结点类型

{

doublecoef;//系数

intexp;//指数

structpnode*next;

}PolyNode;

voidDispPoly(PolyNode*L)//输出多项式

{

boolfirst=true;//first为true表示是第一项

PolyNode*p=L->next;

while(p!

=NULL)

{

if(first)

first=false;

elseif(p->coef>0)

printf("+");

if(p->exp==0)

printf("%g",p->coef);

elseif(p->exp==1)

printf("%gx",p->coef);

else

printf("%gx^%d",p->coef,p->exp);

p=p->next;

}

printf("\n");

}

voidDestroyList(PolyNode*&L)//销毁单链表

{

PolyNode*p=L,*q=p->next;

while(q!

=NULL)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

voidCreateListR(PolyNode*&L,PolyArraya,intn)//尾插法建表

{

PolyNode*s,*r;inti;

L=(PolyNode*)malloc(sizeof(PolyNode));//创建头结点

L->next=NULL;

r=L;//r始终指向终端结点,开始时指向头结点

for(i=0;i

{

s=(PolyNode*)malloc(sizeof(PolyNode));//创建新结点

s->coef=a[i].coef;

s->exp=a[i].exp;

r->next=s;//将*s插入*r之后

r=s;

}

r->next=NULL;//终端结点next域置为NULL

}

voidSort(PolyNode*&head)//按exp域递减排序

{

PolyNode*p=head->next,*q,*r;

if(p!

=NULL)//若原单链表中有一个或以上的数据结点

{

r=p->next;//r保存*p结点后继结点的指针

p->next=NULL;//构造只含一个数据结点的有序表

p=r;

while(p!

=NULL)

{

r=p->next;//r保存*p结点后继结点的指针

q=head;

while(q->next!

=NULL&&q->next->exp>p->exp)

q=q->next;//在有序表中找插入*p的前驱结点*q

p->next=q->next;//将*p插入到*q之后

q->next=p;

p=r;

}

}

}

voidAdd(PolyNode*ha,PolyNode*hb,PolyNode*&hc)//求两有序集合的并

{

PolyNode*pa=ha->next,*pb=hb->next,*s,*tc;

doublec;

hc=(PolyNode*)malloc(sizeof(PolyNode));//创建头结点

tc=hc;

while(pa!

=NULL&&pb!

=NULL)

{

if(pa->exp>pb->exp)

{

s=(PolyNode*)malloc(sizeof(PolyNode));//复制结点

s->exp=pa->exp;s->coef=pa->coef;

tc->next=s;tc=s;

pa=pa->next;

}

elseif(pa->expexp)

{

s=(PolyNode*)malloc(sizeof(PolyNode));//复制结点

s->exp=pb->exp;s->coef=pb->coef;

tc->next=s;tc=s;

pb=pb->next;

}

else//pa->exp=pb->exp

{

c=pa->coef+pb->coef;

if(c!

=0)//系数之和不为0时创建新结点

{

s=(PolyNode*)malloc(sizeof(PolyNode));//复制结点

s->exp=pa->exp;s->coef=c;

tc->next=s;tc=s;

}

pa=pa->next;

pb=pb->next;

}

}

if(pb!

=NULL)pa=pb;//复制余下的结点

while(pa!

=NULL)

{

s=(PolyNode*)malloc(sizeof(PolyNode));//复制结点

s->exp=pa->exp;s->coef=pa->coef;

tc->next=s;tc=s;

pa=pa->next;

}

tc->next=NULL;

}

voidmain()

{

PolyNode*ha,*hb,*hc;

PolyArraya={{1.2,0},{2.5,1},{3.2,3},{-2.5,5}};

PolyArrayb={{-1.2,0},{2.5,1},{3.2,3},{2.5,5},{5.4,10}};

CreateListR(ha,a,4);

CreateListR(hb,b,5);

printf("原多项式A:

");DispPoly(ha);

printf("原多项式B:

");DispPoly(hb);

Sort(ha);

Sort(hb);

printf("有序多项式A:

");DispPoly(ha);

printf("有序多项式B:

");DispPoly(hb);

Add(ha,hb,hc);

printf("多项式相加:

");DispPoly(hc);

DestroyList(ha);

DestroyList(hb);

DestroyList(hc);

}

四、实验结果和分析

五、实验心得体会

本实验过程中,我进一步了解了单链表的各种操作以及对应的函数的使用方法,以及学会熟练调用函数来实现,比较深刻地体会到了使用单链表的好处和方便。

广东工业大学数据结构实验报告(3)

学院:

自动化专业:

12级物联网3班

姓名:

xxx学号:

xxx老师:

张小波

实验日期:

2014年6月21日实验地点:

实二203成绩评定:

实验题目:

病人看病模拟程序

一、实验目的

掌握顺序栈以及循环队列的使用。

二、实验软件环境

1.计算机每人一台。

2.软件:

VisualStudio2012

三、实验内容

#include

#include

typedefstructqnode

{

intdata;

structqnode*next;

}QNode;//链队节点类型

typedefstruct

{

QNode*front,*rear;

}QuType;//链队类型

voidDestroyqueue(QuType*&qu)//释放链队

{

QNode*p,*q;

p=qu->front;

if(p!

=NULL)//若链队不空

{

q=p->next;

while(q!

=NULL)//释放队中所有的节点

{

free(p);

p=q;

q=q->next;

}

free(p);

}

free(qu);//释放链队节点

}

voidSeeDoctor()

{

intsel,flag=1,find,no;

QuType*qu;

QNode*p;

qu=(QuType*)malloc(sizeof(QuType));//创建空队

qu->front=qu->rear=NULL;

while(flag==1)//循环执行

{

printf("1:

排队2:

就诊3:

查看排队4.不再排队,余下依次就诊5:

下班请选择:

");

scanf("%d",&sel);

switch(sel)

{

case1:

printf(">>输入病历号:

");

do

{

scanf("%d",&no);

find=0;

p=qu->front;

while(p!

=NULL&&!

find)

{

if(p->data==no)

find=1;

else

p=p->next;

}

if(find)

printf(">>输入的病历号重复,重新输入:

");

}while(find==1);

p=(QNode*)malloc(sizeof(QNode));//创建节点

p->data=no;p->next=NULL;

if(qu->rear==NULL)//第一个病人排队

qu->front=qu->rear=p;

else

{

qu->rear->next=p;qu->rear=p;//将*p节点入队

}

break;

case2:

if(qu->front==NULL)//队空

printf(">>没有排队的病人!

\n");

else//队不空

{

p=qu->front;

printf(">>病人%d就诊\n",p->data);

if(qu->rear==p)//只有一个病人排队的情况

qu->front=qu->rear=NULL;

else

qu->front=p->next;

free(p);

}

break;

case3:

if(qu->front==NULL)//队空

printf(">>没有排列的病人!

\n");

else//队不空

{

p=qu->front;

printf(">>排队病人:

");

while(p!

=NULL)

{

printf("%d",p->data);

p=p->next;

}

printf("\n");

}

break;

case4:

if(qu->front==NULL)//队空

printf(">>没有排列的病人!

\n");

else//队不空

{

p=qu->front;

printf(">>病人按以下顺序就诊:

");

while(p!

=NULL)

{

printf("%d",p->data);

p=p->next;

}

printf("\n");

}

Destroyqueue(qu);//释放链队

flag=0;//退出

break;

case5:

if(qu->front!

=NULL)//队不空

printf(">>请排队的病人明天就医!

\n");

flag=0;//退出

Destroyqueue(qu);//释放链队

break;

}

}

}

voidmain()

{

SeeDoctor();

}

四、实验结果和分析

五、实验心得体会

本实验过程中,要求考虑的情况较多,在循环队列中使用指针的使用过程中对空的这种情况还是欠缺考虑,所以以后在进行循环队列使用中务必要记得考虑对空的情况。

广东工业大学数据结构实验报告(4)

学院:

自动化专业:

12级物联网3班

姓名:

xxx学号:

xxx老师:

张小波

实验日期:

2014年6月21日实验地点:

实二203成绩评定:

实验题目:

文本串加密和解密程序

一、实验目的

掌握顺序栈以及循环队列的使用。

二、实验软件环境

1.计算机每人一台。

2.软件:

VisualStudio2012

三、实验内容

lgo4-1.cpp

#include

#defineMaxSize100//最多的字符个数

typedefstruct

{chardata[MaxSize];//定义可容纳MaxSize个字符的空间

intlength;//标记当前实际串长

}SqString;

voidStrAssign(SqString&s,charcstr[])//s为引用型参数

{inti;

for(i=0;cstr[i]!

='\0';i++)

s.data[i]=cstr[i];

s.length=i;

}

voidStrCopy(SqString&s,SqStringt)//s为引用型参数

{inti;

for(i=0;i

s.data[i]=t.data[i];

s.length=t.length;

}

boolStrEqual(SqStrings,SqStringt)

{boolsame=true;

inti;

if(s.length!

=t.length)//长度不相等时返回0

same=false;

else

for(i=0;i

if(s.data[i]!

=t.data[i])//有一个对应字符不相同时返回0

{same=false;

break;

}

returnsame;

}

intStrLength(SqStrings)

{

returns.length;

}

SqStringConcat(SqStrings,SqStringt)

{SqStringstr;

inti;

str.length=s.length+t.length;

for(i=0;i

str.data[i]=s.data[i];

for(i=0;i

str.data[s.length+i]=t.data[i];

returnstr;

}

SqStringSubStr(SqStrings,inti,intj)

{SqStringstr;

intk;

str.length=0;

if(i<=0||i>s.length||j<0||i+j-1>s.length)

returnstr;//参数不正确时返回空串

for(k=i-1;k

str.data[k-i+1]=s.data[k];

str.length=j;

returnstr;

}

SqStringInsStr(SqStrings1,inti,SqStrings2)

{intj;

SqStringstr;

str.length=0;

if(i<=0||i>s1.length+1)//参数不正确时返回空串

returnstr;

for(j=0;j

str.data[j]=s1.data[j];

for(j=0;j

str.data[i+j-1]=s2.data[j];

for(j=i-1;j

str.data[s2.length+j]=s1.data[j];

str.length=s1.length+s2.length;

returnstr;

}

SqStringDelStr(SqStrings,inti,intj)

{intk;

SqStringstr;

str.length=0;

if(i<=0||i>s.length||i+j>s.length+1)//参数不正确时返回空串

returnstr;

for(k=0;k

str.data[k]=s.data[k];

for(k=i+j-1;k

str.data[k-j]=s.data[k];

str.length=s.length-j;

returnstr;

}

SqStringRepStr(SqStrings,inti,intj,SqStringt)

{intk;

SqStringstr;

str.length=0;

if(i<=0||i>s.length||i+j-1>s.length)//参数不正确时返回空串

returnstr;

for(k=0;k

str.data[k]=s.data[k];

for(k=0;k

str.data[i+k-1]=t.data[k];

for(k=i+j-1;k

str.data[t.length+k-j]=s.data[k];

str.length=s.length-j+t.length;

returnstr;

}

voidDispStr(SqStrings)

{inti;

if(s.length>0)

{for(i=0;i

printf("%c",s.data[i]);

printf("\n");

}

}

//文件名:

exp4-4.cpp

#include

#include

#defineMaxSize100

typedefstruct

{chardata[MaxSize];

intlength;//串长

}SqString;

externvoidStrAssign(SqString&,char[]);//在algo4-1.cpp文件中

externvoidDispStr(SqString);

SqStringA,B;//全局串

SqStringEnCrypt(SqStringp)

{

inti=0,j;

SqStringq;

while(i

{

for(j=0;p.data[i]!

=A.data[j];j++);

if(j>=p.length)//在A串中未找到p.d

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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