码迷,mamicode.com
首页 > 编程语言 > 详细

C++程序设计实践指导1.15找出回文数改写要求实现

时间:2015-02-11 18:28:20      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

改写要求1:用单链表实现

#include <cstdlib>
#include <iostream>

using namespace std;
struct LinkNode
{
       int data;
       LinkNode *next;
};
class PALINDROME
{
      int low,up;
      int a[100];
      int count;
      public:
             PALINDROME(int t1,int t2);
             int IsPalin(int x);
             LinkNode* IsPalinAndStore();
             void OutputResults(LinkNode* Head);
};

PALINDROME::PALINDROME(int t1,int t2)
{
   count=0;
   low=t1;
   up=t2;
}
LinkNode* PALINDROME::IsPalinAndStore()
{
     LinkNode* Head=new LinkNode;
     Head->next=NULL;
     LinkNode* p=Head;
     for(int i=low;i<=up;i++)
     {
             int x=i*i;
             if(IsPalin(x))
             {
                LinkNode* newLinkNode=new LinkNode;
                newLinkNode->next=NULL;
                newLinkNode->data=i;
                p->next=newLinkNode;
                p=newLinkNode;
             }
     }
     return Head;
}
void PALINDROME::OutputResults(LinkNode* Head)
{
     LinkNode* p=Head->next;
     cout<<"count="<<count<<endl;
     cout<<"x"<<\t<<"x*x"<<endl;
     while(p)
     {
        cout<<p->data<<\t<<p->data*p->data<<endl;
        p=p->next;
     }
}
int PALINDROME::IsPalin(int x)
{
    int i=0,j,n;
    int a[100];
    while(x)
    {
       a[i]=x%10;
       x=x/10;
       i++;
    }
    n=i;
    for(i=0,j=n-1;i<=j;i++,j--)
       if(a[i]!=a[j])
          return 0;
       return 1;
}
int main(int argc, char *argv[])
{
    LinkNode* Head=new LinkNode;
    PALINDROME p(100,1000);
    Head=p.IsPalinAndStore();
    p.OutputResults(Head);
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

C++程序设计实践指导1.15找出回文数改写要求实现

标签:

原文地址:http://www.cnblogs.com/c5395348/p/4286710.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!