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

改写要求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;
}
原文地址:https://www.cnblogs.com/c5395348/p/4271930.html