Gear.Turbo

1*3*5*7....*1997

看见别人的blog里有个问题是这样的:1*3*5*7....*1997的值是多少,它是用数组解决的,觉得不是很好,它定义了一个4000维的数组,然而这个4000是怎么得出的?不知道,因此,我用双向链表解决此问题:
using System;

class Node
{
    
int _data;
    
public Node before;
    
public Node next;
    
public Node(int data)
    
{
        _data 
= data;
        before 
= null;
        next 
= null;
    }

    
public int data
    
{
        
get return _data;}
        
set { _data = value;}
    }

}

class multiply
{
    Node head, tail;
    
public multiply(int data)
    
{
        head 
= tail = new Node(data);
    }

    
public void AddNode(int data)
    
{
        
        Node t 
= new Node(data);
        t.before 
= tail;
        tail.next 
= t;
        tail 
= t;
        
    }

    
public void multi(int d)
    
{
        Node c 
= head;
        
int n = 0;
        
while (c!=null)
        
{
            
int t = c.data * d + n;
            c.data 
= t % 10;
            n 
= t / 10;
            c 
= c.next;
        }

        
while (n > 0)
        
{
            AddNode(n
%10);
            n 
/= 10;
        }

    }

    
public void print()
    
{
        Node c 
= tail;
        
while(c != null)
        
{
            Console.Write(c.data);
            c 
= c.before;
        }

    }

}

class program
{
    
public static void Main()
    
{
        multiply m 
= new multiply(1);
        
for (int i = 2; i<6; i++)
        
{
            m.multi(i
*2 - 1);
        }

        m.print();
    }

}

posted on 2007-01-17 09:13  lsp  阅读(192)  评论(0)    收藏  举报

导航