资源简介
课程设计 任意长的整数加法 C++ 数据结构
代码片段和文件信息
#include
#include
#include
using namespace std;
struct linkNode
{
int data; //记录每个节点的整数(小于10000)
linkNode *next; //记录下一个节点的地址
linkNode *pre; //记录前一个节点的地址
};
class linkList
{
private:
linkNode *head0*head1; //head0,head1分别记录两个整数链表的头指针
linkNode *currptr;
linkNode *result; //result记录结果链表的头指针
public:
linkList(); //构造函数,初始化链表
~linkList(); //析构函数,释放空间
void Creat(string a); //引入字符串,创立两个链表,分别表示两个整数
void Add(); //实现两个整数相加
void Display(); //显示结果
void addtwo();
//节点多的作为被加数,少的作为加数,实现整数绝对值大的加小的
};
int sum(int n);
linkList::linkList() //构造函数,初始化链表
{
head0=new linkNode;
//申请一个空间记录整数的符号和节点数
head1=new linkNode;
head0->next=head0;
head0->pre=head0; //初始化链表,建立双向循环链表
head1->next=head1;
head1->pre=head1;
result=new linkNode;
result->next=result;
result->pre=result;
currptr=NULL;
}
linkList::~linkList() //析构函数,释放空间
{
linkNode *p1=head0*p2=head1*p3=result;
//三个指针分别指向三条链表的头指针
while(p1!=p1->pre)
{
p1->pre->next=p1->next;
p1->next->pre=p1->pre;
currptr=p1;
p1=p1->next;
delete currptr;
}
while(p2!=p2->pre) //逐个删除节点,释放空间
{
p2->pre->next=p2->next;
p2->next->pre=p2->pre;
currptr=p2;
p2=p2->next;
delete currptr;
}
while(p3!=p3->pre)
{
p3->pre->next=p3->next;
p3->next->pre=p3->pre;
currptr=p3;
p3=p3->next;
delete currptr;
}
// delete p1;
// delete p2;
// delete p3;
}
void linkList::Creat(string a) //引入字符串,创立两个链表,分别表示两个整数
{
int i=0j=0m=0n=0k=0l=0s=0w=0;
//i记录字符串,j记录加数节点数;s记录被加数节点数
//w标记字符串中的‘-’号
//k记录字符串中的字符转化为整数的值,l使每个节点记录4位
while(a[m]!=‘;‘) m++; //m记录字符串中被加数的字符数
n=m;
while(a[n]!=‘\0‘) n++; //n记录字符串的总字符数
if(a[0]==‘-‘)
{
head0->data=(-1); //记录整数符号
w=1;
}
else {head0->data=1;}
for(i=m-1;i>=w;i--)
{
if(a[i]!=‘‘) //把字符转化为整数
{
k+=(a[i]-‘0‘)*sum(l);
l++;
}
if(a[i]==‘‘||i==w)
{
currptr=new linkNode; //把整数存到双向循环链表中
currptr->data=k;
currptr->next=head0;
currptr->pre=head0->pre;
head0->pre->next=currptr;
head0->pre=currptr;
head0=currptr;
s++; //节点数加1
k=0; //重新初始化k和l
l=0;
}
}
head0->pre->data*=s; //存储整数符号和节点数
//与建第一个整数链表一样,建立第二个整数链表head1
k=0;l=0;
if(a[m+1]==‘-‘)
{
head1->data=(-1);
m++;
}
else
head1->data=1;
for(i=n-1;i>m;i--)
{
if(a[i]!=‘‘)
{
k+=(a[i]-‘0‘)*sum(l);
l++;
}
if(a[i]==‘‘||i==m
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-06-04 14:10 任意长的整数加法\
文件 9765 2011-01-06 13:54 任意长的整数加法\25.任意长的整数加法.cpp
文件 170496 2012-06-04 14:10 任意长的整数加法\25.任意长的整数加法.doc
相关资源
- c++ c 数据结构 课程设计 学生成绩管理
- 人事管理系统C语言课程设计报告
- C语言课程设计 - 学生宿舍管理系统
- C语言课程设计——超市商品库存管理
- c语言课程设计报告 计算器的实现内
- 数据结构课程设计 带括号的算术表达
- 操作系统课程设计银行家算法C语言
- 客房管理系统的C++课程设计
- 商品销售统计的C++课程设计
- 学生社团管理程序 c++ 课程设计
- C++ 停车场管理 数据结构 课程设计
- 分数计算器课程设计
- 人事管理系统(使用MFC单文档程序,
- c语言课程设计之网络购物系统
- 《C++面向对象程序设计》课程设计—
- 单片机简易计算器的设计包含设计报
- 编译原理课程设计广工C语言
- c语言万年历的课程设计及源码
- c语言 课程设计 井字棋
- 高速公路收费系统C语言课程设计报告
- 20C++MFC课程设计之吹泡泡游戏
- 编译原理课程设计——算术表达式、
- 数据结构课程设计汉诺威塔
- 单片机课程设计数字温度控制器
- 广工编译原理课程设计 PL0C++改进需用
- c语言五子棋小游戏课程设计报告
- 课程设计全国交通咨询模拟系统C++实
- C语言课程设计——职工管理系统
- 数据结构课程设计应用索引文件和查
- 飞机订票系统课程设计报告及源代码
评论
共有 条评论