zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    OpenCV 图像二值化 threshold
    C++ pow()函数
    Marr-Hildreth 边缘检测 OpenCV C++实现
    OpenCV 边缘检测 Canny
    OpenCV Canny()函数
    OpenCV Sobel()函数
    OpenCV 边缘检测 Sobel
    OpenCV 边缘检测 Laplacian
    OpenCV 边缘检测 Scharr
    OpenCV 形态学变换 morphologyEx函数
  • 原文地址:https://www.cnblogs.com/c5395348/p/4271930.html
Copyright © 2011-2022 走看看