1 / 73
文档名称:

数据结构实验报告(重邮).doc

格式:doc   大小:438KB   页数:73页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验报告(重邮).doc

上传人:tswng35 2020/11/29 文件大小:438 KB

下载得到文件列表

数据结构实验报告(重邮).doc

文档介绍

文档介绍:数据结构实验报告
学院:
班级:

学号:
实验一 线性链表的实现与操作
题目:设计一个100位以的长整数加减运算的程序
班级: : 学号: 完成日期:
一、需求分析
1、 本实验中,100位长整数的每位上的数字必须为数字[0——9]之间,长整数的位数并要求100位以。测试的时候输入数据,当输入回车键的时候结束输入,如果输入的字符不符合题目要求,则程序能过滤这些不符合要求的字符。
2、演示程序以用户和计算机的对话方式执行,即在计算机显示“提示信息”后之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入中不符合要求的字符)和运算结果显示在其后。
3、程序执行的命令包括:
(1)创建第一个整数(100以);(2)执行加法或者减法;(3)创建第二个整数(100以);(4)结束。
二、概要设计
为实现上述程序功能,可以用链表或者长数组表示长整数,如果用数组表示长整数有个缺点就是长整数不能无限长,而链表能动态开辟空间,它克服了这个缺点,所以次试验用链表来表示长整数。
1、链表的抽象数据类型定义为:
ADT Number{
数据对象:D={ai| ai∈(0,1,…,9),i=0,1,2,…,n,n≥0}
数据关系:R={< ai-1, ai >| ai-1, ai∈D,i=1,2,…,n}
基本操作:
CreateList(&L)
操作结果:创建一个链表L。
PrintList(L)
初始条件:链表L已存在。
操作结果:在屏幕上输出链表的值。
PlusList(L1,L2,a)
初始条件:链表L1,L2已存在,a为+ or – 表示加减。
操作结果:将两链表的值相加然后在屏幕上输出。
DestroyList(&L)
初始条件:链表L已存在。
操作结果:销毁链表L。
} ADT Number
2、本程序包含五个模块:
int main(){
定义变量;
接受命令;
处理命令;
return 0;
}
各模块之间的调用关系如下:
主程序模块
L1 L2
创建链表模块
创建链表模块
+or - :
L2 L1
输出链表模块
输出链表模块
+or -
=
两链表加减模块
L1 L2
销毁链表模块
结束
销毁链表模块
三、详细设计
1、定义头文件
#include<>
#include<>
#define LEN sizeof(Number)
typedef struct number Number;
struct number
{
int data;
Number *next;
Number *prior;
};
///////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
void DestoryList(Number *); //释放链表
void PutNumber(Number *); //将求得的结果输出
Number *GetNumber(); //创建链表,放被加数与加数
Number *JiaFa(Number *num_1,Number *num_2); //加法函数
Number *JianFa(Number *num_1,Number *num_2); //减法函数
Number *number_1,*number_2,*number;
char ch; //存放运算符号
printf("Enter the first long number:");
number_1=GetNumber();
printf("put +or-: