资源简介
课程设计 任意长的整数加法 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语言课程设计:客房登记系统源码
- 8位竞赛抢答器的课程设计报告.docx
- VC++MFC课程设计的学生成绩管理系统
- C++实现21点游戏
- c++课程设计学生管理系统浙工大源码
- 课程设计: MFC 学生信息管理系统
- dsp课程设计——语音加密.zip
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- c++课程设计宾馆客房管理系统
- c语言课程设计-职工信息管理系统-单
- 飞机票订购系统C语言课程设计报告全
- c++ 课程设计_中国象棋
- 编译原理课程设计-C语言子集编译器
- 操作系统课程设计(银行家算法)附
- 用c写的航空订票系统 航班信息改变
- 信息论课程设计——LZW编码
- 人员管理系统 c语言源码 课程设计专
- MFC课程设计学生管理系统
- vc++课程设计 让计算机来猜测用户“暗
- 职工工作量统计系统.rar
- 扫雷游戏.cpp C++ 课程设计
- C语言数据结构课程设计之统计C程序单
- 职工信息管理系统C 链表
- C++课程设计 扑克牌游戏内含2程序
- 学生成绩管理系统 (C语言版)课程设
- 软件工程课程设计--自动排课排课系统
评论
共有 条评论