C++程序设计实践指导1.3求任意整数降序数改写要求实现
2015-02-04 11:27
337 查看
改写要求1:动态生成单链表存储
改写要求2:以最大、最小、次最大、次最小等间隔排序
#include <cstdlib> #include <iostream> using namespace std; struct LinkNode { int data; struct LinkNode *next; }; class NUM { int n; public: NUM(int x) { n=x; } struct LinkNode * descrease(); void show(LinkNode* pHead) { LinkNode* p; p=pHead; p=p->next; cout<<"n= "<<n<<endl; while(p) { cout<<p->data; p=p->next; } cout<<endl; } }; struct LinkNode * NUM::descrease() { LinkNode* pHead=new LinkNode; pHead->next=NULL; LinkNode* p; LinkNode* q; p=pHead; int temp; int x=n; while(x) { LinkNode* newLinkNode=new LinkNode; newLinkNode->next=NULL; newLinkNode->data=x%10; x=x/10; p->next=newLinkNode; p=newLinkNode; } for(p=pHead;p!=NULL;p=p->next) for(q=p->next;q!=NULL;q=q->next) { if(p->data<q->data) { temp=q->data; q->data=p->data; p->data=temp; } } return pHead; } int main(int argc, char *argv[]) { int n; LinkNode* pHead; cout<<"Input n: "; cin>>n; NUM num(n); pHead=num.descrease(); num.show(pHead); system("PAUSE"); return EXIT_SUCCESS; }
改写要求2:以最大、最小、次最大、次最小等间隔排序
#include <cstdlib> #include <iostream> using namespace std; struct LinkNode { int data; struct LinkNode *next; }; class NUM { int n; int sum; public: NUM(int x) { n=x; } struct LinkNode * descrease(); void show(LinkNode* pHead) { LinkNode* p; p=pHead; p=p->next; cout<<"n= "<<n<<endl; cout<<"sum= "<<sum<<endl; while(p) { cout<<p->data; p=p->next; } cout<<endl; } }; struct LinkNode * NUM::descrease() { LinkNode* pHead=new LinkNode; pHead->next=NULL; LinkNode* p; LinkNode* q; p=pHead; int temp; int x=n; bool flag=true; sum=0; while(x) { LinkNode* newLinkNode=new LinkNode; newLinkNode->next=NULL; newLinkNode->data=x%10; sum+=newLinkNode->data; x=x/10; p->next=newLinkNode; p=newLinkNode; } for(p=pHead->next;p!=NULL;p=p->next) { if(flag) { for(q=p->next;q!=NULL;q=q->next) { if(p->data<q->data) { temp=q->data; q->data=p->data; p->data=temp; } } }else{ for(q=p->next;q!=NULL;q=q->next) { if(p->data>q->data) { temp=q->data; q->data=p->data; p->data=temp; } } } flag=!flag; } return pHead; } int main(int argc, char *argv[]) { int n; LinkNode* pHead; cout<<"Input n: "; cin>>n; NUM num(n); pHead=num.descrease(); num.show(pHead); system("PAUSE"); return EXIT_SUCCESS; }
相关文章推荐
- C++程序设计实践指导1.1删除序列中相同的数改写要求实现
- C++程序设计实践指导1.13自然数集中找合数改写要求实现
- C++程序设计实践指导1.6分数运算改写要求实现
- C++程序设计实践指导1.8求指定范围内的所有素数改写要求实现
- C++程序设计实践指导1.15找出回文数改写要求实现
- C++程序设计实践指导1.12数组中数据线性变换改写要求实现
- C++程序设计实践指导1.14字符串交叉插入改写要求实现
- C++程序设计实践指导1.7超长数列中n个数排序改写要求实现
- C++实现输入两个整数n和m,从数列1,2,3...n中随意取几个数,使其和等于m,要求列出所有的组合
- C++程序设计原理与实践之GUI程序实现问题
- 用c++对一个5位数的任意整数,求出其降序数。例如,整数是82319,则其降序数是98321。试建立一个类DescendNUM,用于完成该功能。
- 使用C++中string实现任意长度的正小数、整数之间加减法方法实例
- c++对一个5位数的任意整数,求出其降序数
- c++ 对一个5位数的任意整数,求出其降序数
- 1.3 求任意整数降序数
- 将任意类型映射到一个唯一整数(C++模板实现TypeList)
- 编程实现任意长度整数的加法(整数可以长度超出C++中int范围)
- 任意进制整数之间的相互转换(C++实现)
- [置顶] C++实现任意复数、实数、矩阵相乘(要求用重载函数)
- c/c++整理--实现任意长度正整数相加