数据结构课程设计总结 (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《程序设计与数据结构》

综合课程设计论文

题目:程序设计与数据结构综合课程设计

专业:计算机科学与技术

班级:N计科12-1F

*名:***

学号:*********** 指导老师:***

一、课程认识

数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件

和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据

库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系

统工程等各种领域。

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用

能力和专业素质的提高。通过此次课程设计主要达到以下目的:

◆了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

◆初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方

法和技能;

◆提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

◆训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所

应具备的科学的工作方法和作风。

◆训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构

理论知识,编写程序求解指定问题。

二、问题描述及分析

1、问题描述

设计一个一元多项式程序,并完成多项式的加法、减法、以及乘法的运算。

如A(x)=15+6x+9x7+3x18 B(x)=4x+5x6+16x7 求 A+B A*B

2、问题分析

①.在数学上,一个一元多项式Pn(x)可按升幂写成:Pn(x)=a 0+a1 x+a2 x^2

+…+a n x^n-1 .它由n+1个系数惟一确定,因此,在计算机里,它可用一个线

性表P来表示:Pn=(a0,a1,a2,…,an)每一项的指数i隐含在其系数ai的序号

里。设m

②由于一元多项式的建立、运算等操作经常要插入或者删除元素,所以考

虑使用链式存储结构(带头结点的链表)作为数据结构,以减少移动元素的次数,减少空间复杂度和空间复杂度。

③减法运算可以转化为加法运算,因此可以大大地简化程序。

④乘法运算可以多次调用加法函数实现。

三、数据结构描述

1、数据结构选择

本程序讨论的是利用线性链表的基本操作来实现一元多项式的运算。

2、数据结构与多项式的结合

在数学中,每个单项式都具有系数和指数,当系数为0时,该项就失去了意义,在计算机内要表示一个多项式,至少以下数据信息:系数信息、指数

信息和指向下一个单项式的指针。通过指针,我们就可以把多个单项式连接

起来,形式一个多项式,需要说明的是从广义的角度讲,单项式也是一个多

项式。

3、数据结构的特点及结点表示

线性链表的另一个特点是插入或删除结点是不必移动其他结点,而仅需调整指针的指向关系以适应新的数据关系,从而大大简化了创建、插入和删

除的工作。

基于以上的分析,我们定义多项式的数据结构为如下结构体形式:

struct node

{

float coef; //系数

int expn; //指数

struct node *next; //指针指向下一个结点

};

四、主要算法流程描述(个人负责部分)

如图4-1为主函数流程图

图5-1为加法算法的流程图

图6-1为减法算法的流程图

图7-1为输出算法的流程图

五、使用说明

该程序在VC++6.0中调试通过,没有错误和警告,运行结果经过检验为正确。以下即为该程序运行结果效果图。图中采用的是计算多项式3x^+2x^7+4x^2+1和x^4+5x^3+6x^5的输入方式和加减乘除四种运算结果进行的演示:

1、输入并建立多项式链表

2、加、减、乘、除运算

3、使用条件及方法

条件:请在Microsoft (R) Developer Studio VC++6.0 开发环境下运行。

方法:将“Add”、“Copy”、“CreatePolyn”、“Divide”、“login”、“Multiply”、“Print”、“ReArrange”、“struct node”、“Substraction”包含在同一文件夹下面,运行“login”,然后根据提示,输入链表每一个结点的系数和指数值,然后选择加减乘除这四个运算的任意一个,得到结果。

4、注意事项

1、在输入多项式每一个结点时,系数定义为浮点型,指数定义为整型,用户输入的时候,应该注意,系数输入浮点和整型都可以,而指数为整型,若输入为浮点型,则会产生误差。

2、用户在输入选择某一个算法时,应该按照界面上的提示说明进行输入,若超出提示范围,则会提示让用户重新输入。

3、用户在包含文件的时候,请注意每一项文件的完整性。缺失则会导致运行错误。

六、调试分析说明

调试过程中出现的问题和处理方式:

1、在编写加法函数时,比较p->expn,q->expn 的时候,应该编写下面程序来使问题

简化。

int compare(int a,int b)

{

if(a

return -1;

else

if(a==b)

return 0;

else

return 1; }

2、在编写减法程序的时候,应该注意调用加法程序,只需要在后面的链表系数全部乘

以(-1),使得减法程序变得十分简洁。

struct node *Subtraction(struct node *p,struct node *q)

{

struct node *headq=q,*head;

q=q->next;

while(q)

{

q->coef=q->coef*(-1);

q=q->next;

}

head=AddPolyn(p,headq);

return head;

}

3、在编写”print”函数时,由于多项式是由单项式相加,所以在输出的时候printf("X^%d+",p->expn);每一次都会输出+号,所以在最后的时候需要printf(“\b”);来删除最后的+号,但是由于用户可能输入A或者B是0,所以最后都没有+,但是原

相关文档
最新文档