ETemp数据结构课程设计报告.docVIP

  • 0
  • 0
  • 约1.17万字
  • 约 16页
  • 2016-12-19 发布于贵州
  • 举报
《数据结构》 课程设计报告 学 号 姓 名 班 级 计算机科学与技术102班 指导教师 安徽工业大学计算机学院 2012年6月 课题一 大数相乘问题 一、问题描述: 本问题中,要求输入两个相对较大的正整数,能够通过程序计算出其结果。这两个大数的位数均在18位以上,不用使用long int类型来处理。 二、设计思路: 首先考虑设计将两个大数按照输入顺序存入分别存入进入线性表L1[MS],L2[MS]中; 2、把这个数组中的每一位数字单独来进行乘法运算,比如我们可以用一个数字和另外一个数组中的每一位去相乘,从而得到乘法运算中一行的数字,再将每一行数字错位相加。这就是乘法运算的过从低位往高位依次计算,同时确定每一列的项数,确定每一位上的结果存入链桟PS中; 然后将桟中元素逐个输出,也就是依次输出各位上的数值; 4、通过主函数来调用其它各个函数。 三、数据结构定义: 1、/*桟结构体定义*/ typedef struct { DataType data[MS]; int top; }SeqStack,*PSeqStack; 2、/*队列结构体定义 */ typedef struct { DataType data[MS]; int front,rear; }SeqQueue,*PSeqQueue; 3、/* 顺序表结构体定义 */ typedef struct node { DataType data[MS]; int length; }SeqList,*PSeqList; 四、系统功能模块介绍: 1、桟结构模块: PSeqStack Init_SeqStack()/*初始化空栈*/ int Empty_SeqStack(PSeqStack S) /*判栈空*/ int Push_SeqStack(PSeqStack S,DataType x) /*入栈*/ int Pop_SeqStack(PSeqStack S,DataType *x) /*出栈*/ void Destroy_SeqStack(PSeqStack *S) /*销毁栈*/ 2、队列结构体模块: PSeqQueue Init_SeqQueue()/*队列初始化 */ int Empty_SeqQueue(PSeqQueue Q) /*判断队空 */ int In_SeqQueue(PSeqQueue Q,DataType x) /*入队 */ int Out_SeqQueue(PSeqQueue Q,DataType *x) /*出队 */ void Destroy_SeqQueue(PSeqQueue *Q) /*销毁队列 */ 3、顺序表结构模块: PSeqList Init_SeqList()/* 顺序表初始化 */ int Insert_SeqList(PSeqList PL,int i,DataType x) /* 顺序表插入 */ void Destroy_SeqList(PSeqList *PL) /* 销毁线性表 */ 大数其他模块: void SortSeqQueue(PSeqQueue PQ) /* 整理队列,主要是相乘的数进行进位 */ void Multiply(PSeqList PL1,PSeqList PL2,PSeqQueue PQ,PSeqStack PS) /* 大数相乘的主函数 */ void PrintResult(PSeqStack PS) /* 打印结果 */ 五、程序清单(源程序): #includestdio.h #includestdlib.h #includestring.h #define DataType int /* 定义数据类型为整型 */ #define MS 101 /* 相乘的两个整数总位数不超过100 */ /*桟结构体定义*/ typedef struct { DataType data[MS]; int top; }SeqStack,*PSeqStack; /*初始化空栈*/ PSeqStack Init_SeqStack() { PSeqStack S; S=(PSeqStack)malloc(sizeof(SeqStack)); if(S) { S-top=-1; } return S; } /*判栈空*/ int Empty_SeqStack(PSeqStack S) { if(S-top==-1) return 1; els

文档评论(0)

1亿VIP精品文档

相关文档