您的位置:首页 > 编程语言 > C语言/C++

C++程序设计实践指导1.3求任意整数降序数改写要求实现

2015-02-04 11:27 337 查看
改写要求1:动态生成单链表存储

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐