Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: [ Solved ] sử dụng danh sách liên kết đơn lưu trữ, thưc hiên một vài phép toán!

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    1

    Smile [ Solved ] sử dụng danh sách liên kết đơn lưu trữ, thưc hiên một vài phép toán!

    sử dụng danh sách liên kết đơn lưu trữ tập hợp thưc hiên các phép toán "hợp giao hiệu cộng trừ" các pác giúp em với

    Chú ý đặt tiêu đề bài viết rõ ràng phản ánh nội dung thread
    Đã được chỉnh sửa lần cuối bởi rox_rook : 05-05-2008 lúc 04:23 AM.

  2. #2
    Ngày gia nhập
    08 2008
    Bài viết
    1

    Cộng hai số lớn bằng DSLK đơn
    PHP Code:
    #include "stddef.h"
    #include "conio.h"
    #include "stdio.h"

    typedef struct tagNode
    {
        
    int info;
        
    struct tagNode *pNext;
    }
    Node;

    typedef struct
    {
        
    Node *Head;
        
    Node *Tail;
    }List;

    void CreateList(List &l)
    {
        
    l.Head=NULL;
        
    l.Tail=NULL;

    }

    Node *CreateNode(int x)
    {
        
    Node *p;
        
    p=new Node;
        
    p->info=x;
        
    p->pNext=NULL;
        return 
    p;
    }

    void AddHead(List &lNode *p)
    {
        if(
    l.Head==NULL)
        {
            
    l.Head=p;
            
    l.Tail=p;

        }
        else
        {
            
    p->pNext=l.Head;
            
    l.Head=p;
        }
    }
    void AddTail(List &l,Node *p)
    {
        if(
    l.Head==NULL)
        {
            
    l.Head=p;
            
    l.Tail=p;

        }
        else
        {
            
    l.Tail->pNext=p;
            
    l.Tail=p;
        }

    }
    int DeleteHead(List &l,int &x)
    {
        
    Node *p;
        if(
    l.Head!=NULL)
        {
            
    p=l.Headx=p->info;
            
    l.Head=p->pNext;
            if(
    l.Head==NULL)
                
    l.Tail=NULL;
            
    delete p;
            return 
    1;
        }
        return 
    0;
    }

    void PrintList(List l)
    {
        
    Node *p;
        
    p=l.Head;
        while(
    p!=NULL)
        {
            
    printf("%d",p->info);
            
    p=p->pNext;
        }
    }


    void ThanhLapListKhiNhap(List &l)
    {
        
    char ch;
        
    Node *p;
        
    int x,tam;
        do
        {
            
    ch=getch();
            if((
    ch>='0')&&(ch<='9'))
            {
                
    putch(ch);
                
    x=ch-48;
                
    p=CreateNode(x);
                
    AddHead(l,p);
            }
            else
            {
                if(
    ch==8)
                {
                    
    putch(ch);
                    
    putch(' ');
                    
    putch(ch);
                    
    DeleteHead(l,tam);;

                }
            }
        }while(
    ch!=13);
    }
    List 
    Cong_Hai_So_Lon(List l1,List l2)
    {
        
    int x,du=0,nho=0;
        
    Node *p;
        
    p=l1.Head;
        
    Node *q;
        
    q=l2.Head;
        List 
    LKet_qua;
        
    CreateList(LKet_qua);
        while(
    p!=NULL||q!=NULL)
        {
            if(
    p==NULL)
                
    x=q->info+nho;
            if(
    q==NULL)
                
    x=p->info+nho;
            if(
    p!=NULL&&q!=NULL)
                
    x=p->info+q->info+nho;
            if(
    p->pNext!=NULL||q->pNext!=NULL)
            {
                if(
    x>=10)
                {
                    
    du=x-10;
                    
    nho=1;
                }
                else
                {
                    
    du=x;
                    
    nho=0;
                }
            }
            else
            {
                
    du=x;
                
    nho=0;
            }
            
    Node *k;
            
    k=CreateNode(du);
            
    AddTail(LKet_qua,k);
            
    p=p->pNext;
            
    q=q->pNext;
        }
        return 
    LKet_qua;
    }

    void InNguoc(List l)
    {
        
    Node *p=l.Head;
        
    int a[100],i=0;
        while(
    p!=NULL)
        {
            
    a[i]=p->info;
            
    i++;
            
    p=p->pNext;
        }
        for(
    int j=i-1;j>=0;j--)
            
    printf("%d",a[j]);
    }

    void main()
    {
        
    clrscr();
        
    textmode(C80);
        List 
    l1,l2;
        
    CreateList(l1);
        
    CreateList(l2);
        
    printf("\nNhap so lon thu nhat : ");
        
    ThanhLapListKhiNhap(l1);
        
    printf("\nNhap so lon thu hai : ");
        
    ThanhLapListKhiNhap(l2);
        
    printf("\n\nSo a : ");
        
    InNguoc(l1);
        
    printf("\nSo b : ");
        
    InNguoc(l2);
        
    printf("\nKet Qua phep cong: a+b=");
        List 
    xuatKQ=Cong_Hai_So_Lon(l1,l2);
    //    PrintList(xuatKQ);
        //PrintList(l);
        
    InNguoc(xuatKQ);
        
    getch();


    Đã được chỉnh sửa lần cuối bởi noname00 : 23-08-2008 lúc 03:08 PM.

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    2

    cảm ơn bác rất nhiều, em đang tìm bài toán này

Các đề tài tương tự

  1. [ Solved ]Hỏi về danh sách liên kết
    Gửi bởi zaizai152 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 27-11-2008, 07:18 PM
  2. [ Solved ]Lỗi với danh sách liên kết ! Cần giúp đỡ
    Gửi bởi Kan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 29-10-2008, 09:05 AM
  3. [ Solved ]Xin ví dụ về danh sách liên kết
    Gửi bởi Nemo_wf trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-09-2008, 11:50 PM
  4. [ Solved ]Danh sách liên kết
    Gửi bởi pa_ven trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 12-05-2008, 04:04 PM
  5. [ Solved ]Đảo ngược danh sách liên kết
    Gửi bởi atuan1989 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 07-04-2008, 07:43 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn