第一篇:廣東工業(yè)大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(12屆)
廣東工業(yè)大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(1)
學(xué)院:自動(dòng)化
專業(yè):12級(jí)物聯(lián)網(wǎng)3班
姓名:xxx 學(xué)號(hào):xxx 老師:張小波
實(shí)驗(yàn)日期:2014年6月21日
實(shí)驗(yàn)地點(diǎn):實(shí)二203 成績(jī)?cè)u(píng)定:
實(shí)驗(yàn)題目:求一個(gè)正整數(shù)的各位數(shù)字之和
一、實(shí)驗(yàn)?zāi)康?求一個(gè)正整數(shù)的各位數(shù)字之和。
二、實(shí)驗(yàn)軟件環(huán)境
1.計(jì)算機(jī)每人一臺(tái)。2.軟件:Visual Studio 2012
三、實(shí)驗(yàn)內(nèi)容
#include
s+=num%10;
num/=10;} while(num);return(s);} void main(){ int n;printf(“輸入一個(gè)整數(shù):”);scanf(“%d”,&n);printf(“各位數(shù)字之和:%dn”,func(n));printf(“n”);}
四、實(shí)驗(yàn)結(jié)果和分析
當(dāng)輸入一個(gè)整數(shù)的時(shí)候,得出的是該整數(shù)的所有數(shù)字的和
五、實(shí)驗(yàn)心得體會(huì)
本實(shí)驗(yàn)過(guò)程中,感覺能用簡(jiǎn)單的方法實(shí)現(xiàn)程序就應(yīng)該用簡(jiǎn)單的,一開始我用了多個(gè)for循環(huán),感覺沒必要,就用了do-while循環(huán),因此保持程序的簡(jiǎn)潔,精悍是最應(yīng)該的,過(guò)于冗雜的程序不僅臃腫,而且難以分析,分享。
廣東工業(yè)大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(2)
學(xué)院:自動(dòng)化
專業(yè):12級(jí)物聯(lián)網(wǎng)3班
姓名:xxx 學(xué)號(hào):xxx 老師:張小波
實(shí)驗(yàn)日期:2014年6月21日
實(shí)驗(yàn)地點(diǎn):實(shí)二203 成績(jī)?cè)u(píng)定:
實(shí)驗(yàn)題目:求兩個(gè)多項(xiàng)式的相加運(yùn)算
一、實(shí)驗(yàn)?zāi)康?熟悉并學(xué)會(huì)使用多項(xiàng)式的表示方法以及計(jì)算方法
二、實(shí)驗(yàn)軟件環(huán)境
1.計(jì)算機(jī)每人一臺(tái)。2.軟件:Visual Studio 2012
三、實(shí)驗(yàn)內(nèi)容
#include
int exp;
} PolyArray[MAX];typedef struct pnode //定義單鏈表結(jié)點(diǎn)類型 { double coef;
int exp;} PolyNode;void DispPoly(PolyNode *L)//輸出多項(xiàng)式 { bool first=true;
PolyNode *p=L->next;while(p!=NULL)//多項(xiàng)式最多項(xiàng)數(shù)
//定義存放多項(xiàng)式的數(shù)組類型
//系數(shù) //指數(shù)
//系數(shù) //指數(shù)
struct pnode *next;//first為true表示是第一項(xiàng)
{
} printf(“n”);} void DestroyList(PolyNode *&L)//銷毀單鏈表 { PolyNode *p=L,*q=p->next;while(q!=NULL){
} free(p);} void CreateListR(PolyNode *&L,PolyArray a,int n)//尾插法建表 { PolyNode *s,*r;int i;L=(PolyNode *)malloc(sizeof(PolyNode));//創(chuàng)建頭結(jié)點(diǎn)
L->next=NULL;r=L;
{
} r->next=NULL;} void Sort(PolyNode *&head){ PolyNode *p=head->next,*q,*r;if(p!=NULL)
if(first)
first=false;printf(“+”);printf(“%g”,p->coef);printf(“%gx”,p->coef);printf(“%gx^%d”,p->coef,p->exp);else if(p->coef>0)if(p->exp==0)else if(p->exp==1)else p=p->next;free(p);p=q;q=p->next;
//r始終指向終端結(jié)點(diǎn),開始時(shí)指向頭結(jié)點(diǎn)
for(i=0;i
//按exp域遞減排序
//將*s插入*r之后
//若原單鏈表中有一個(gè)或以上的數(shù)據(jù)結(jié)點(diǎn)
{
} } void Add(PolyNode *ha,PolyNode *hb,PolyNode *&hc)//求兩有序集合的并 { PolyNode *pa=ha->next,*pb=hb->next,*s,*tc;double c;hc=(PolyNode *)malloc(sizeof(PolyNode));tc=hc;while(pa!=NULL && pb!=NULL){
r=p->next;p=r;
//r保存*p結(jié)點(diǎn)后繼結(jié)點(diǎn)的指針
p->next=NULL;while(p!=NULL){
} r=p->next;q=head;//構(gòu)造只含一個(gè)數(shù)據(jù)結(jié)點(diǎn)的有序表
//r保存*p結(jié)點(diǎn)后繼結(jié)點(diǎn)的指針
while(q->next!=NULL && q->next->exp>p->exp)q=q->next;
//在有序表中找插入*p的前驅(qū)結(jié)點(diǎn)*q p->next=q->next;//將*p插入到*q之后 q->next=p;p=r;
//創(chuàng)建頭結(jié)點(diǎn)
if(pa->exp>pb->exp){
} else if(pa->exp
exp){
} else {
c=pa->coef+pb->coef;if(c!=0){
s=(PolyNode *)malloc(sizeof(PolyNode));//復(fù)制結(jié)點(diǎn) s->exp=pa->exp;s->coef=c;tc->next=s;tc=s;//系數(shù)之和不為0時(shí)創(chuàng)建新結(jié)點(diǎn) //pa->exp=pb->exp s=(PolyNode *)malloc(sizeof(PolyNode));//復(fù)制結(jié)點(diǎn) s->exp=pb->exp;s->coef=pb->coef;tc->next=s;tc=s;pb=pb->next;s=(PolyNode *)malloc(sizeof(PolyNode));//復(fù)制結(jié)點(diǎn) s->exp=pa->exp;s->coef=pa->coef;tc->next=s;tc=s;pa=pa->next;
}
} } pa=pa->next;pb=pb->next;if(pb!=NULL)pa=pb;//復(fù)制余下的結(jié)點(diǎn)
while(pa!=NULL){
} tc->next=NULL;} void main(){ PolyNode *ha,*hb,*hc;PolyArray a={{1.2,0},{2.5,1},{3.2,3},{-2.5,5}};PolyArray b={{-1.2,0},{2.5,1},{3.2,3},{2.5,5},{5.4,10}};CreateListR(ha,a,4);CreateListR(hb,b,5);printf(“原多項(xiàng)式A: ”);DispPoly(ha);printf(“原多項(xiàng)式B: ”);DispPoly(hb);Sort(ha);Sort(hb);printf(“有序多項(xiàng)式A: ”);DispPoly(ha);printf(“有序多項(xiàng)式B: ”);DispPoly(hb);Add(ha,hb,hc);printf(“多項(xiàng)式相加: ”);DispPoly(hc);DestroyList(ha);DestroyList(hb);DestroyList(hc);} s=(PolyNode *)malloc(sizeof(PolyNode));//復(fù)制結(jié)點(diǎn) s->exp=pa->exp;s->coef=pa->coef;tc->next=s;tc=s;pa=pa->next;
四、實(shí)驗(yàn)結(jié)果和分析
五、實(shí)驗(yàn)心得體會(huì)
本實(shí)驗(yàn)過(guò)程中,我進(jìn)一步了解了單鏈表的各種操作以及對(duì)應(yīng)的函數(shù)的使用方法,以及學(xué)會(huì)熟練調(diào)用函數(shù)來(lái)實(shí)現(xiàn),比較深刻地體會(huì)到了使用單鏈表的好處和方便。
廣東工業(yè)大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(3)
學(xué)院:自動(dòng)化
專業(yè):12級(jí)物聯(lián)網(wǎng)3班
姓名:xxx
學(xué)號(hào):xxx 老師:張小波
實(shí)驗(yàn)日期:2014年6月21日
實(shí)驗(yàn)地點(diǎn):實(shí)二203 成績(jī)?cè)u(píng)定:
實(shí)驗(yàn)題目:病人看病模擬程序
一、實(shí)驗(yàn)?zāi)康恼莆枕樞驐R约把h(huán)隊(duì)列的使用。
二、實(shí)驗(yàn)軟件環(huán)境
1.計(jì)算機(jī)每人一臺(tái)。2.軟件:Visual Studio 2012
三、實(shí)驗(yàn)內(nèi)容
#include
{
//鏈隊(duì)節(jié)點(diǎn)類型
typedef struct
//鏈隊(duì)類型
void Destroyqueue(QuType *&qu)//釋放鏈隊(duì)
//若鏈隊(duì)不空
q=p->next;while(q!=NULL)
//釋放隊(duì)中所有的節(jié)點(diǎn)
{
free(p);
p=q;
q=q->next;
}
free(p);} free(qu);
//釋放鏈隊(duì)節(jié)點(diǎn)
} void SeeDoctor(){ int sel,flag=1,find,no;QuType *qu;QNode *p;qu=(QuType *)malloc(sizeof(QuType));//創(chuàng)建空隊(duì) qu->front=qu->rear=NULL;while(flag==1)
//循環(huán)執(zhí)行
{ printf(“1:排隊(duì) 2:就診 3:查看排隊(duì) 4.不再排隊(duì),余下依次就診 5:下班
scanf(”%d“,&sel);
switch(sel)
{
case 1: printf(” >>輸入病歷號(hào):“);
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(” >>輸入的病歷號(hào)重復(fù),重新輸入:“);
} while(find==1);
p=(QNode *)malloc(sizeof(QNode));//創(chuàng)建節(jié)點(diǎn)
p->data=no;p->next=NULL;
if(qu->rear==NULL)
//第一個(gè)病人排隊(duì)
qu->front=qu->rear=p;
else
{
qu->rear->next=p;qu->rear=p;//將*p節(jié)點(diǎn)入隊(duì)
}
請(qǐng)選擇:”);
break;
//隊(duì)空 //隊(duì)不空
{ p=qu->front;printf(“ >>病人%d就診n”,p->data);if(qu->rear==p)
//只有一個(gè)病人排隊(duì)的情況
qu->front=qu->rear=NULL;printf(“ >>沒有排隊(duì)的病人!n”);
case 2: if(qu->front==NULL)
else
else qu->front=p->next;free(p);break;
//隊(duì)空 //隊(duì)不空 printf(“ >>沒有排列的病人!n”);
}
case 3:if(qu->front==NULL)
else
{
} break;
p=qu->front;printf(“ >>排隊(duì)病人:”);while(p!=NULL){
} printf(“n”);printf(“%d ”,p->data);p=p->next;case 4:if(qu->front==NULL)
//隊(duì)空 //隊(duì)不空 printf(“ >>沒有排列的病人!n”);
else
{
} Destroyqueue(qu);flag=0;break;
//隊(duì)不空
printf(“ >>請(qǐng)排隊(duì)的病人明天就醫(yī)!n”);
//釋放鏈隊(duì) //退出 p=qu->front;printf(“ >>病人按以下順序就診:”);while(p!=NULL){
} printf(“n”);printf(“%d ”,p->data);p=p->next;
case 5:if(qu->front!=NULL)
} void main(){ SeeDoctor();}
} flag=0;
break;
//退出
//釋放鏈隊(duì) Destroyqueue(qu);}
四、實(shí)驗(yàn)結(jié)果和分析
五、實(shí)驗(yàn)心得體會(huì)
本實(shí)驗(yàn)過(guò)程中,要求考慮的情況較多,在循環(huán)隊(duì)列中使用指針的使用過(guò)程中對(duì)空的這種情況還是欠缺考慮,所以以后在進(jìn)行循環(huán)隊(duì)列使用中務(wù)必要記得考慮對(duì)空的情況。
廣東工業(yè)大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(4)
學(xué)院:自動(dòng)化
專業(yè):12級(jí)物聯(lián)網(wǎng)3班
姓名:xxx 學(xué)號(hào):xxx
老師:張小波
實(shí)驗(yàn)日期:2014年6月21日
實(shí)驗(yàn)地點(diǎn):實(shí)二203 成績(jī)?cè)u(píng)定:
實(shí)驗(yàn)題目:文本串加密和解密程序
一、實(shí)驗(yàn)?zāi)康恼莆枕樞驐R约把h(huán)隊(duì)列的使用。
二、實(shí)驗(yàn)軟件環(huán)境
1.計(jì)算機(jī)每人一臺(tái)。2.軟件:Visual Studio 2012
三、實(shí)驗(yàn)內(nèi)容
lgo4-1.cpp #include
} void StrCopy(SqString &s,SqString t){
} bool StrEqual(SqString s,SqString t)
//最多的字符個(gè)數(shù)
//定義可容納MaxSize個(gè)字符的空間
int length;//標(biāo)記當(dāng)前實(shí)際串長(zhǎng)
int i;s.data[i]=cstr[i];for(i=0;cstr[i]!='