数据结构课程设计报告文档格式.docx
- 文档编号:18867420
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:27
- 大小:147.27KB
数据结构课程设计报告文档格式.docx
《数据结构课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
读取规则1。
读规则2函数:
读取规则2。
写入函数:
将魔王所说的话写入文件并保存。
去括号函数:
将魔王所说话中的括号按要求去掉。
翻译函数:
将魔王所说的话翻译为人类语言。
字母转换函数:
将大写字母转换为小写字母。
打印规则1函数:
将规则1打印出来。
打印规则2函数:
将规则2打印出来。
主体函数:
与主函数共同调用模块。
五、详细设计及运行结果(流程图,函数之间相互调用的图示,程序设计及编码,运行结果)
/*乘法运算函数*/
开始
L=head
p=polya->
next;
p!
=NULL;
假
真
q=polyb->
q!
=NULL
真
r=(Polylist)malloc(sizeof(Polynode));
r->
coef=p->
coef*q->
coef;
r->
exp=p->
exp+q->
exp;
L->
next=r;
L=r;
q=q->
p=p->
next=NULL;
结束
/*合并函数*/
r=L
next!
是
a=r->
next->
p=r->
p->
否
b=p->
a==b
temp1=(Polylist)malloc(sizeof(Polynode));
coef=r->
coef+p->
temp1=p->
next=temp1->
free(temp1);
coef==0
否
是
temp2=(Polylist)malloc(sizeof(Polynode));
temp2=r->
next=temp2->
free(temp2);
r=r->
next
/*排序函数*/
r=L->
r!
(r->
exp)<
(p->
exp)
exp=a;
b2=p->
coef=b2;
结束
运行结果:
/*去括号函数*/
i=0;
i<
l;
a[i]=='
)'
PoP(S1,&
e);
S1->
data!
='
('
EnterQueue(Q,e);
PoP(S1,&
c=e;
k);
Q->
rear!
=Q->
front
Push(S1,c);
DeleteQueue(Q,&
Push(S1,e);
Push(S1,a[i]);
i++
/*大小写转换函数*/
x);
x>
a'
&
x<
z'
Push(S,x);
A'
Z'
是i=0
26;
x==P[i]->
element
否
是r=P[i]->
element>
element<
Push(S3,r->
element);
否
break;
i++
/*翻译*/
S2->
PoP(S2,&
mn[i]=e;
i++;
save(mn,S);
i=0
r=S->
element==mn[i]
是
printf("
%s"
r->
chinese);
break;
六、调试情况,设计技巧及体会
1.在本次课程设计中,虽然可以按照要求完成,但在某些设计上较为繁琐,可以加以修改,让其更加精简完善。
2.此次课程设计,不仅是对所学数据结构知识的加以巩固,更是对自己动手能力的锻炼,将理论与实际真正结合起来,对以后要学习的专业知识也做好了一定的铺垫,对自己有一个较大的提升。
七、参考文献
《C语言程序设计》谭浩强清华大学出版社
《C语言程序设计》王曙燕等科学出版社
《数据结构——使用C语言》陈一华等电子科技大学出版社
《数据结构题集》严蔚敏吴伟民清华大学出版社
八、附录:
源代码
#include"
stdio.h"
stdlib.h"
math.h"
typedefstructPolynode
{
intcoef;
/*系数*/
intexp;
/*指数*/
structPolynode*next;
}Polynode,*Polylist;
/*创建函数*/
voidpolycreate(Polylisthead)
Polylistrear,s;
intc,e;
rear=head;
/*rear始终指向但链表的尾,便于尾插法进行建表*/
printf("
请输入每一项的系数和指数:
\n"
);
scanf("
%d,%d"
&
c,&
while(c!
=0)
{
s=(Polylist)malloc(sizeof(Polynode));
s->
s->
coef=c;
exp=e;
rear->
next=s;
/*尾插法进行创建*/
rear=s;
}
建立结束!
}
voidcheng(Polylistpolya,Polylistpolyb,Polylisthead)
Polylistp,q,r,L;
L=head;
for(p=polya->
next)
for(q=polyb->
{
r=(Polylist)malloc(sizeof(Polynode));
L->
}
voidcombine(PolylistL)
Polylistr,p,temp1,temp2;
inta,b;
for(r=L;
a=r->
/*r指向第一个元素的指数*/
while(p->
=NULL)
b=p->
/*指向第二个元素的指数*/
if(a==b)
{
temp1=(Polylist)malloc(sizeof(Polynode));
/*合并后删掉后面一项*/
p->
/*指针后移*/
}
elsep=p->
if(r->
coef==0)/*若系数为0,则删除该结点*/
temp2=(Polylist)malloc(sizeof(Polynode));
temp2=r->
}
voidorder(PolylistL)/*合并后的多项式中指数只存在大于和小于的关系*/
Polylistr,p;
inta;
floatb2;
p=(Polylist)malloc(sizeof(Polynode));
for(r=L->
for(p=r->
next)/*按从大到小的顺序排列*/
if((r->
exp))
/*交换指数*/
/*交换系数*/
/*打印函数*/
voidprintf1(PolylistS)
Polylistr;
for(r=S->
r;
coef<
0)
printf("
%dx^%d"
coef,r->
exp);
else
next&
coef>
0)printf("
+"
/*主函数*/
voidmain()
charflag='
;
Polylisthead,polya,polyb;
head=(Polylist)malloc(sizeof(Polynode));
head->
polya=(Polylist)malloc(sizeof(Polynode));
polya->
polyb=(Polylist)malloc(sizeof(Polynode));
polyb->
while(flag=='
)
\n创建第一个多项式\n"
polycreate(polya);
order(polya);
combine(polya);
printf1(polya);
\n创建第二个多项式\n"
polycreate(polyb);
order(polyb);
combine(polyb);
printf1(polyb);
\n输出多项式相乘\n"
("
printf1(polya);
)"
*"
order(polyb);
printf1(polyb);
="
cheng(polya,polyb,head);
combine(head);
order(head);
printf1(head);
flushall();
\n需要继续进行多项式相乘运算吗?
需要请按a键,否则任意其他键退出\n"
%c"
flag);
string.h"
conio.h"
#defineMAX100
typedefstructnode
chardata;
structnode*next;
}LinkStackNode,*LinkStack;
typedefstructNode
structNode*next;
}LinkQueueNode;
typedefstruct
LinkQueueNode*front;
LinkQueueNode*rear;
}LinkQueue;
structpers
charelement;
charchinese[50];
structpers*next;
};
voidPush(LinkStacktop,charx)/*头插法*/
LinkStacktemp;
temp=(LinkStack)malloc(sizeof(LinkStackNode));
temp->
data=x;
next=top->
top->
next=temp;
}
voidPoP(LinkStacktop,char*x)
temp=top->
next=temp->
*x=temp->
data;
free(temp);
voidEnterQueue(LinkQueue*Q,charx)/*尾插法*/
LinkQueueNode*NewNode;
/*队列的结点*/
NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(NewNode!
NewNode->
Q->
rear->
next=NewNode;
rear=NewNode;
voidDeleteQueue(LinkQueue*Q,char*x)
LinkQueueNode*p;
p=Q->
front->
Q->
next=p->
if(Q->
rear==p)Q->
rear=Q->
front;
*x=p->
free(p);
/*读规则1函数*/
voidread1(structpers*P[26])
FILE*fp;
inti;
charx;
if((fp=fopen("
H:
\\课程设计\\quying\\rule.txt"
"
rt"
))==NULL)
printf("
\n\n****读规则文件出错,按任意键返回!
****"
getchar();
exit
(1);
while(!
feof(fp))
for(i=0;
i++)
structpers*r,*p;
P[i]=(structpers*)malloc(sizeof(structpers));
p=P[i];
fscanf(fp,"
%c"
while(x!
#'
r=(structpers*)malloc(sizeof(structpers));
r->
element=x;
p->
p=r;
fscanf(fp,"
p->
fclose(fp);
\n\n****文件1中信息已正确读出,按任意键继续!
****\n"
getchar();
/*读规则2函数*/
voidread2(structpers*S)
structpers*r,*head;
inti=0;
head=S;
\\课程设计\\quying\\mean.txt"
\n\n****读翻译文件出错,按任意键返回****"
while(i<
26)/*文件未读取完*/
r=(structpers*)malloc(sizeof(structpers));
fscanf(fp,"
%s"
i++;
head->
head=r;
head->
\n\n****文件2中信息已正确读出,按任意键继续!
/*写入函数*/
voidsave(charch[MAX],structpers*S)
structpers*r;
inti=0,l;
\\课程设计\\quying\\results.txt"
at+"
))==NULL)/*可追加读入*/
写文件出错,按任意键返回"
l=strlen(ch);
for(i=0;
i++)/*存放字母翻译*/
fprintf(fp,"
ch[i]);
r=S->
while(r!
if(r->
element==ch[i])/*找到该字母的汉语意思,输出*/
{
fprintf(fp,"
break;
}
elser=r->
恭喜您保存成功,按任意键继续!
voidchange(chara[50],LinkStackS1,LinkQueue*Q,intl)
charc,e,k;
i++)
if(a[i]=='
)/*遇到右括号出栈*/
PoP(S1,&
while(S1->
)/*S1有头指针*/
EnterQueue(Q,e);
PoP(S1,&
c=e;
/*标记首字母*/
/*去掉左括号*/
while(Q->
front)
Push(S1,c);
DeleteQueue(Q,&
Push(S1,e);
Push(S1,c);
elsePush(S1,a[i]);
/*利用递归进行大小写代换*/
voidexchange(charx,structpers*P[26],LinkStackS3)
r=(structpers*)malloc(sizeof(structpers));
if(x==P[i]->
element)
for(r=P[i]->
if(r->
Push(S3,r->
elseif(r->
exchange(r->
element,P,S3);
/*大小写代换,大写字母调用exchange函数*/
voidtranslate(LinkStackS1,LinkStackS,structpers*P[26])
charx,m;
LinkStackS3;
S3=(LinkStack)malloc(sizeof(LinkStackNode));
S3->
while(S1->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)