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

上传人:b****6 文档编号:8358692 上传时间:2023-05-11 格式:DOCX 页数:32 大小:452.48KB
下载 相关 举报
广东工业大学数据结构实验报告12届文档格式.docx_第1页
第1页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第2页
第2页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第3页
第3页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第4页
第4页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第5页
第5页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第6页
第6页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第7页
第7页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第8页
第8页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第9页
第9页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第10页
第10页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第11页
第11页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第12页
第12页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第13页
第13页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第14页
第14页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第15页
第15页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第16页
第16页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第17页
第17页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第18页
第18页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第19页
第19页 / 共32页
广东工业大学数据结构实验报告12届文档格式.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

printf("

\n"

4、实验结果和分析

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

5、实验心得体会

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

 

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

(2)

求两个多项式的相加运算

一、实验目的

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

二、实验软件环境

VisualStudio2012

三、实验内容

#include<

malloc.h>

#defineMAX20//多项式最多项数

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

doublecoef;

//系数

intexp;

//指数

}PolyArray[MAX];

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

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)

%g"

p->

coef);

exp==1)

%gx"

else

%gx^%d"

coef,p->

exp);

p=p->

}

voidDestroyList(PolyNode*&

L)//销毁单链表

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

while(q!

free(p);

p=q;

q=p->

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<

n;

i++)

s=(PolyNode*)malloc(sizeof(PolyNode));

//创建新结点

s->

coef=a[i].coef;

exp=a[i].exp;

r->

next=s;

//将*s插入*r之后

r=s;

r->

//终端结点next域置为NULL

voidSort(PolyNode*&

head)//按exp域递减排序

PolyNode*p=head->

next,*q,*r;

if(p!

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

r=p->

//r保存*p结点后继结点的指针

p->

//构造只含一个数据结点的有序表

p=r;

while(p!

{

r=p->

//r保存*p结点后继结点的指针

q=head;

while(q->

next!

=NULL&

&

q->

next->

exp>

p->

exp)

q=q->

//在有序表中找插入*p的前驱结点*q

p->

next=q->

//将*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!

pb!

if(pa->

pb->

exp)

s=(PolyNode*)malloc(sizeof(PolyNode));

//复制结点

s->

exp=pa->

exp;

s->

coef=pa->

coef;

tc->

tc=s;

pa=pa->

elseif(pa->

exp<

exp=pb->

coef=pb->

pb=pb->

else//pa->

exp

c=pa->

coef+pb->

if(c!

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

{

s=(PolyNode*)malloc(sizeof(PolyNode));

s->

coef=c;

tc->

}

if(pb!

=NULL)pa=pb;

//复制余下的结点

tc->

pa=pa->

tc->

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);

原多项式A:

"

DispPoly(ha);

原多项式B:

DispPoly(hb);

Sort(ha);

Sort(hb);

有序多项式A:

有序多项式B:

Add(ha,hb,hc);

多项式相加:

DispPoly(hc);

DestroyList(ha);

DestroyList(hb);

DestroyList(hc);

四、实验结果和分析

五、实验心得体会

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

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

病人看病模拟程序

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

typedefstructqnode

intdata;

structqnode*next;

}QNode;

//链队节点类型

typedefstruct

QNode*front,*rear;

}QuType;

//链队类型

voidDestroyqueue(QuType*&

qu)//释放链队

QNode*p,*q;

p=qu->

front;

=NULL)//若链队不空

while(q!

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

free(p);

p=q;

q=q->

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)//循环执行

1:

排队2:

就诊3:

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

下班请选择:

sel);

switch(sel)

case1:

>

>

输入病历号:

do

{

scanf("

no);

find=0;

p=qu->

while(p!

!

find)

{

if(p->

data==no)

find=1;

else

p=p->

}

if(find)

printf("

输入的病历号重复,重新输入:

}while(find==1);

p=(QNode*)malloc(sizeof(QNode));

//创建节点

data=no;

if(qu->

rear==NULL)//第一个病人排队

qu->

rear=p;

else

rear->

qu->

//将*p节点入队

break;

case2:

if(qu->

front==NULL)//队空

没有排队的病人!

else//队不空

{

p=qu->

病人%d就诊\n"

data);

if(qu->

rear==p)//只有一个病人排队的情况

qu->

front=p->

free(p);

break;

case3:

if(qu->

没有排列的病人!

排队病人:

while(p!

=NULL)

{

printf("

%d"

}

break;

case4:

front==NULL)//队空

else//队不空

病人按以下顺序就诊:

Destroyqueue(qu);

//释放链队

flag=0;

//退出

case5:

front!

=NULL)//队不空

请排队的病人明天就医!

flag=0;

SeeDoctor();

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

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

文本串加密和解密程序

lgo4-1.cpp

#defineMaxSize100//最多的字符个数

typedefstruct

{chardata[MaxSize];

//定义可容纳MaxSize个字符的空间

intlength;

//标记当前实际串长

}SqString;

voidStrAssign(SqString&

s,charcstr[])//s为引用型参数

{inti;

cstr[i]!

='

\0'

;

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

s.length=i;

voidStrCopy(SqString&

s,SqStringt)//s为引用型参数

t.length;

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;

s.length;

if(s.data[i]!

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

{same=false;

returnsame;

intStrLength(SqStrings)

returns.length;

SqStringConcat(SqStrings,SqStringt)

{SqStringstr;

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

i++)//将s.data[0..s.length-1]复制到str

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

i++)//将t.data[0..t.length-1]复制到str

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

returnstr;

SqStringSubStr(SqStrings,inti,intj)

intk;

str.length=0;

if(i<

=0||i>

s.length||j<

0||i+j-1>

s.length)

returnstr;

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

for(k=i-1;

k<

i+j-1;

k++)//将s.data[i..i+j]复制到str

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

str.length=j;

}

SqStringInsStr(SqStrings1,inti,SqStrings2)

{intj;

SqStringstr;

s1.length+1)//参数不正确时返回空串

for(j=0;

j<

i-1;

j++)//将s1.data[0..i-2]复制到str

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

s2.length;

j++)//将s2.data[0..s2.length-1]复制到str

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

for(j=i-1;

s1.length;

j++)//将s1.data[i-1..s1.length-1]复制到str

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

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

SqStringDelStr(SqStrings,inti,intj)

{intk;

s.length||i+j>

s.length+1)//参数不正确时返回空串

for(k=0;

k++)//将s.data[0..i-2]复制到str

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

for(k=i+j-1;

k++)//将s.data[i+j-1..s.length-1]复制到str

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

str.length=s.length-j;

SqStringRepStr(SqStrings,inti,intj,SqStringt)

s.length||i+j-1>

s.length)//参数不正确时返回空串

k++)//将s.data[0..i-2]复制到str

k++)//将t.data[0..t.length-1]复制到str

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

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

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

voidDispStr(SqStrings)

if(s.length>

{for(i=0;

%c"

s.data[i]);

//文件名:

exp4-4.cpp

string.h>

#defineMaxSize100

//串长

externvoidStrAssign(SqString&

char[]);

//在algo4-1.cpp文件中

externvoidDispStr(SqString);

SqStringA,B;

//全局串

SqStringEnCrypt(SqStringp)

inti=0,j;

SqStringq;

while(i<

p.length)

for(j=0;

p.data[i]!

=A.data[j];

j++);

if(j>

=p.length)//在A串

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2