数据结构大作业

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

数据结构课程设计

题目:长整数四则运算

班级:信管12-1

学号:1201050642

姓名:庄术洁

指导老师:刘晓庆

2014年5月22日

一、需求分析

1、利用双向循环链表实现长整数的存储,每个结点含一个整数变量。任何整形变量的范围是—(2^15—1)~(2^15—1)。输入和输出形式:按中国对于长证书的表示习惯,每四位一组,组间用逗号隔开。

2、测试数据

(1) 0; 0;应输出“0”

(2)—2345,6789;—7654,3211;应输出“—1,0000,0000”。

(3)—9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。

(4)1,0001,0001;—1,0001,0001;应输出“0”。

(5)1,0001,0001;—1,0001,0000;应输入“1”。

(6)—9999,9999,9999;—9999,9999,9999;应输出“—1,9999,9999,9998”。

(7)1,0000,9999,9999;1应输出“1,0001,0000,0000”。

二、概要设计

为上述程序功能,应以有序表实现长整数的存储,为此,需要抽象数据类型:有序表

(8)有序表的抽象数据类型定义为:

ADT Dulinklist{

数据对象: D={ai|ai为带符号整数,1,2,…,n,n>=0}

数据关系:R1={|ai-1,ai属于集合D,ai-1

基本操作:

InitDulinklist(&)

操作结果:构造一个空的有序表L

DestroyDulinklist(&)

初始条件:有序表L已存在

操作结果:销毁有序表L

DulinklistLength(L)

初始条件:有序表L已存在

操作结果:返回有序表L的长度

DulinklistEmpty(L)

初始条件:有序表L已存在

操作结果:若有序表L为空表,则返回TUER,否则返回FALSE

GetElem(L,pos)

初始条件:有序表L已存在

操作结果:若干1〈=POS〈=LENGTH(L),则返回有序表L 中第POS个数据元素。

Append(&L,e)

初始条件:有序表L已存在

操作结果:在有序表L的末尾插入元素e

}ADT Dulinklist

3.本程序包含三个模块:

1)主程序模块:

2)有序表单元模块——实现有序表的抽象数据类型;

3)结点结构单元模块——定义有序表的结点结构

各模块之间的调用关系如下:

主程序模块

有序表单元模块

结点结构单元模块

typedef struct DoubleNode //定义链表元素

void InitNode(DLNode **head) //初始化链表

int InsertNode(DLNode *head,int n,DataType x) //向链表第N个位置插入元素X

int digit(int n) //判断整数N有几位

void PrintNode(DLNode *head) //打印链表

void DestroyNode(DLNode **head)//销毁链表

void add(DLNode *h1,DLNode *h2) //两数相加

void jian(DLNode *h1,DLNode *h2) //两数相减

int main() //入口函数

四、调试分析

由于在程序设计时,对于指针的不了解,编程时使用双重指针,无形中给自己增添了更多麻烦。老师在检查的过程中指出并教导了这一点

五.用户手册

1.本程序的运行环境为DOS操作系统,执行文件为:

2.进入演示程序后即显示有提示的用户界面:

六.测试结果

(1)输入0和0时输出“0”

(2)输入-2345,6789和-7654,3211时输出“-1,0000,0000”

(3)输入-9999,9999和1,0000,0000,0000时输出“9999,0000,0001”(4)输入1,0001,0001和-1,0001,0001

时输出“0”

(5)输入1,0001,0001和-1,0001,0000时输出“1”(6)输入-9999,9999,9999和-9999,9999,9999时输出“-1,9999,9999,9998”

(7)输入1,0000,9999,9999和1时输出“1,0001,0000,0000”

七、附录

#include

#include

#include

#include

#define N 100

typedef int DataType;

typedef struct DoubleNode //定义链表元素

{ DataType data;

struct DoubleNode *prior;

struct DoubleNode *next; }DLNode;

void InitNode(DLNode **head) //初始化链表

{

if((*head=(DLNode*)malloc(sizeof(DLNode)))==NULL)

相关文档
最新文档