长整数四则运算 下载本文

内容发布更新时间 : 2024/6/26 23:55:55星期一 下面是文章的全部内容请认真阅读。

一 试验目的和要求 1. 实验目的

了解线性表的逻辑结构特性,熟练掌握线性表的链式存储结构,熟练掌握线性表在链式存储结构上实现基本操作:查找,插入,删除的算法。能在实际应用中选用适合的链表结构。加深对链表的本质了解。 2. 实验要求

利用双向链表实现长整数的存储,每个结点含一个整型变量。设计一个实现任意长的整数进行四则运算的演示程序。 二 实验环境

本程序可以在98/2000/XP下运行,可以用VC++6.0执行 三 程序的逻辑框图

双向链表的

初始化

主函数

输入任意长整数

调用双向链表基

本操作函数

长整数求值及结

果显示

END

四, 程序源代码 /*list.h*/

#include #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0

#define INFEASLBLE -1 #define OVERFLOW -2

typedef int Status; typedef int ElemType;

typedef struct DuLNode { ElemType data;

struct DuLNode *prior,*next; }DuLNode,*DuLinkList;

//构造一个空的双向循环线性表,L为头结点 Status InitList_DuL(DuLinkList &L); //在L中确定第i个元素的位置指针p

DuLinkList GetElemP_DuL(DuLinkList L,int i);

//在带头结点的双链循环线性表L中第i个位置之前插入元素e , //i的合法值为1<=i<=ListLength_DuL(L)+1

Status ListInsert_DuL(DuLinkList &L,int i,ElemType e);

//删除带头结点的双链循环线性表L中第i个元素,i的合法值为1<=i<=ListLength_DuL(L) Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e);

//若L为空表,则返回TRUE,否则返回FALSE bool ListEmpty_DuL(DuLinkList L);

//线性表L已存在,返回L中数据元素个数 Status ListLength_DuL(DuLinkList L); //若线性表L已存在,将L置为空表 Status ClearList_DuL(DuLinkList &L); //销毁线性表L

Status DestroyList_DuL(DuLinkList &L); //用e返回L中第i个数据元素的值

void GetElem_DuL(DuLinkList L,int i,ElemType &e); //返回双向循环链表L中e出现的次数 int Counter_DuL(DuLinkList L,ElemType e);

//返回第n个e的在链表中位置 n的合法值为0<=n<=Counter_DuL( L,n) int Position_DuL(DuLinkList L,int n,ElemType e);

/*function.cpp*/ #include\

/**************************************************************************************************/

/****************************函数声明**************************************************************/

/**************************************************************************************************/

DuLinkList calculate(DuLinkList p,int*j,char *f,int *num,int k); void output(DuLinkList r);

DuLinkList Pack_Up(DuLinkList r); //整理链表r void exchange(DuLinkList &L,int &j);

DuLinkList read_r(); void operate(DuLinkList p);

void decride_d();

int counter(int a); //计算整数位数 int max(int *num,int k); //返回最大值

/*list.cpp*/ #include\

Status InitList_DuL(DuLinkList &L)

{//构造一个空的双向循环线性表,L为头结点 L=(DuLinkList)malloc(sizeof(DuLNode)); if(!L)exit(OVERFLOW); L->next=L; L->prior=L; return OK; }//InitList_DuL

DuLinkList GetElemP_DuL(DuLinkList L,int i) {//在L中确定第i个元素的位置指针p DuLinkList p; p=L; for(int j=0;jnext; return (p); }//GetElemP_DuL