长整数四则运算源代码数据结构
更新时间:2023-12-20 11:07:01 阅读量: 教育文库 文档下载
长整数四则运算源代码 数据结构
// 长整数四则运算.cpp : 定义控制台应用程序的入口点。 //
#include <stdafx.h> #include<cstdio> #include<cstring> #include<malloc.h> #include<conio.h> #include<stdlib.h>
#define LEN sizeof(struct Node) #define MAX 1000 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define TRUE 1 #define FALSE 0 typedef int Status; typedef struct Node {
int data;
struct Node *prior,*next; }Node,*NodeList;
//================================================================================ //求指数函数值 int axp(int a,int k) {
int r=1; if(k==0) return 1;
for(;k>0;k--) r=r*a; return r; }
//输入转换函数
Status conversion(char str[],NodeList &oprh) {//将字符串形式的操作数转换成所需的类型
输入模块NodeList p; int i,k,buffer; k=buffer=0;
oprh=(NodeList)malloc(LEN); oprh->next=oprh; oprh->prior=oprh;
for(i=strlen(str)-1;i>=0;i--) {
//若输入的数不合法就返回重新输入 if((i!=0 || (str[0]!='-' str[0]!='+'))&&(str[i]>'9' str[i]<'0')) return ERROR;
if(str[0]=='0' && str[1]!='\\0') return ERROR;
if((str[0]=='-' || str[0]=='+') str[1]=='0') return ERROR;
if(str[i]!='-' && str[i]!='+') {
buffer=buffer+(str[i]-'0')*axp(10,k); k++;
if(k==4 || str[i-1]=='-' || str[i-1]=='+' || i==0) {//将新建结点插入到头结点之后 p=(NodeList)malloc(LEN); oprh->next->prior=p; p->prior=oprh;
p->next=oprh->next; oprh->next=p; p->data=buffer; buffer=k=0; } } }
if(str[0]=='-')
oprh->data='-'; else
oprh->data='+'; return OK; }
//输入函数
Status input(NodeList &opr1,NodeList &opr2,char str[]) {
&&
||
&&
int flag=OK;
printf("\\n请输入第一个操作数:\\n"); scanf("%s",str); getchar();
flag=conversion(str,opr1); while(!flag) {
printf("ERROR!Input again:\\n"); scanf("%s",str); getchar();
flag=conversion(str,opr1); }
printf("\\n请输入第二个操作数:\\n"); scanf("%s",str); getchar();
flag=conversion(str,opr2); while(!flag) {
printf("ERROR!Input again:\\n"); scanf("%s",str); getchar();
flag=conversion(str,opr2); }
return OK; }
//========================================================================================
//=======================================输出模块========================================= //输出函数
Status output(NodeList oprr,char str[]) {
Status initbuf(char str[]); NodeList p; int i,j,num[4]; if(!oprr)
return ERROR; p=oprr; i=j=0;
initbuf(str);
if(oprr->data=='-')
str[i++]='-'; p=p->next;
if(p->next==oprr && p->data==0)//若要输出的数为0则执行 str[i++]='0'; else
while(p!=oprr) {
num[0]=p->data/1000;
num[1]=(p->data-num[0]*1000)/100;
num[2]=(p->data-num[0]*1000-num[1]*100)/10; num[3]=
p->data-num[0]*1000-num[1]*100-num[2]*10; while(j<4) {
if(num[j]!=0 || (str[0]=='-' && str[1]!='\\0')||(str[0]!='-' && str[0]!='\\0')) //此判断语句是为了避免输出诸如:00123…的情况 str[i++]=num[j]+'0'; j++; }
p=p->next; j=0; }
str[i]='\\0';
printf("%s",str); printf("\\n"); return OK; }
//========================================================================================
//==================================预处理及杂项操作模块==================================
//缓冲区部分初始化函数 Status initbuf(char str[]) { int i;
for(i=0;i<=10;i++) str[i]='\\0';
return OK; }
//比较链表长度函数
int cmplinklen(NodeList opr1,NodeList opr2)
{//opr1链比opr2链长则返回1,短则返回-1,否则返回0 NodeList p1,p2; p1=opr1->prior; p2=opr2->prior;
while(p1->prior!=opr1 && p2->prior!=opr2) {
p1=p1->prior; p2=p2->prior; }
if(p1->prior!=opr1) return 1;
if(p2->prior!=opr2) return -1; return 0; }
//求链表长度
int length(NodeList oprr) {
int count=0;
NodeList p=oprr->next; while(p!=oprr) {
count++;
p=p->next; }
return count; }
//生成指定长度链表
Status Creat(NodeList &oprr,int len) {
NodeList p;
oprr=(NodeList)malloc(LEN); p=oprr;
while(len>0) {
p->next=(NodeList)malloc(LEN); p->next->data='?';
正在阅读:
长整数四则运算源代码数据结构12-20
综合实践活动课堂教学模式之一12-08
2016-2020年中国膏药行业市场前瞻与未来投资战略分析报告04-28
顾客给员工的表扬信01-07
感恩企业散文02-16
小学二年级日记02-06
论述题11-03
计算机网络课堂练习题(附答案)11-17
氡的运移规律04-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 四则运算
- 数据结构
- 整数
- 源代码
- 商法总论习题(一)
- 人教PEP版六年级上册Unit1-3单元检测
- 超市管理系统 - 图文
- 2003年常州市数学中考试卷
- 实变函数积分理论部分复习题(附答案版)
- 2011-2012-1B《操作系统》试卷及答案
- 2019年整理--党外代表人士队伍建设经验总结
- Spring阶段小测试-笔试试卷
- 日语综合教程第8课案内者
- 寄生虫题库
- 雅思口语话题分析之家乡 - 图文
- 新闽版2014-2015小学信息技术5年级下册教案
- 电大《商务谈判实务》单元练习与思考(复习及答案)
- 2016-2017学年河北省衡水中学高三(下)三调数学试卷(理科)
- C#2010 使用正则表达式
- 浅谈小学语文教师的专业素养
- 《计算机组网技术》作业
- 民法模拟法庭案例(2014)
- 王宝强经典语录语句
- 河南省区域经济差异变化及因素分析 doc.deflate