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

Đề tài: Mọi người giúp e về DSLK kép với

  1. #1
    Ngày gia nhập
    01 2013
    Bài viết
    1

    Mặc định Mọi người giúp e về DSLK kép với

    Đây là đề BTL của mình: Cài đặt các thao tác cơ bản với danh sách liên kết kép. Minh họa, tạo danh sách thông qua dữ liệu nhập từ file
    Mình đang chưa hoàn thành được phần dữ liệu nhập từ file, mọi người vào xem giúp mình với, hạn cuối nộp bài là hnay rồi. Đây là code của mình, xem và góp ý cho mình với
    Code:
    // Lis.cpp : Defines the entry point for the console application.//
    //
    
    #include "stdio.h"
    #include "string.h"
    #include "iostream"
    
    typedef struct Person
    {
        char ht[20];
        char qq[10];
        int tuoi;
    }ps;
    
    typedef struct tagnode
    {
        Person info;
        tagnode *pnext;
        tagnode *prev;
    }Node;
    
    typedef struct 
    {
        Node *phead;
        Node *ptail;
    }LIST;
    
    Node *CreateNode(Person ps)//tao node moi cho ps
    {
        Node *p;
        p=new Node;
        if(p==NULL)
        {
            printf("khong the cap phat bo nho:\n");
            return NULL;
        }
        p->info=ps;
        p->pnext=NULL;
        p->prev=NULL;
        return p;//tra ve dia chi cua node moi tao
    }
    //prototype---------------------
    void nhapds(Person &ps);
    void xuatds(Person ps);
    void PrintList(LIST mylist);
    void InitList(LIST &mylist);
    int IsEmptyList(LIST mylist) ;
    void AddFirst(LIST &mylist,Node *p) ;
    void AddLast(LIST &mylist,Node *p) ;
    void AddAfterNode(LIST &mylist,Node *p,Node *p_new);
    void RemoveHead(LIST &mylist) ;
    void RemoveLast(LIST &mylist)  ;
    void RemoveAfterNode(LIST &mylist,Node *pdel)  ;
    Node* SearchNode(LIST &mylist,char ht[]) ;
    void BubbleSort(LIST &mylist);
    void InsertNode(LIST mylist,Node *p_new);
    void PrintfSearch(Node *tim);
    void RemoveNode(LIST &mylist);
    void Swap(Node *&p,Node *&min);
    void menu(LIST mylist);
    
    
    //ham Main-------------------------------------------------------------------------------------------------
    
    void nhapds(Person &ps)                    //nhap danh sach
    {
        fflush(stdin);
        printf("Ho Ten: ");gets(ps.ht);
        printf("Que Quan: ");gets(ps.qq);
        printf("Tuoi: ");scanf("%d",&ps.tuoi);
    }
    
    void xuatds(Person ps)                    //xuat danh sach
    {
        fflush(stdin);
        printf("Ho Ten: %-20s Que Quan %-10s Tuoi %-8d\n",ps.ht,ps.qq,ps.tuoi);
    }
    
    void PrintList(LIST mylist)                //in danh sach ra
    {
        Node *p;
        p=mylist.phead;
        while(p!=NULL)
        {
            xuatds(p->info);
            p=p->pnext;//p tro toi dia chi node tiep theo
        }
    }
    
    void InitList(LIST &mylist)              //khoi tao danh sach
    {
        mylist.phead=mylist.ptail=NULL;
    }
    
    int IsEmptyList(LIST mylist)               //kiem tra danh sach rong
    {
        if(mylist.phead==NULL)
            return 0;
        return 1;
    }
    
    void AddFirst(LIST &mylist,Node *p)            //them 1 pt vao dau ds
    {
        if(IsEmptyList(mylist)!=0)
        {
            p->pnext=mylist.phead;
            mylist.phead->prev=p;
            mylist.phead=p;
        }
        else
            mylist.phead=mylist.ptail=p;
    }
    
    void AddLast(LIST &mylist,Node *p)             //them 1 pt vao cuoi ds
    {
        if(IsEmptyList(mylist)!=0)
        {
            mylist.ptail->pnext=p;
            p->prev=mylist.ptail;
            p->pnext=NULL;
        }
        else
            mylist.phead=mylist.ptail=p;
    }
    
    void AddAfterNode(LIST &mylist,Node *p,Node *p_new)//them p_new vao sau p
    {
        if(IsEmptyList(mylist)!=0)
        {
            p_new->pnext=p->pnext;
            p->pnext->prev=p_new;
            p_new->prev=p;
            p->pnext=p_new;
        }
        else
            AddFirst(mylist,p_new);
    }
    
    void RemoveHead(LIST &mylist)                     //xoa pt dau ds
    {
        Node *p;
        if(IsEmptyList(mylist)!=0)
        {
            p=mylist.phead;
            mylist.phead=p->pnext;
            delete p;
        }
        else
            printf("Danh sach rong\n");
    }
    
    void RemoveLast(LIST &mylist)                         //xoa pt cuoi ds
    {
        Node *p,*q;
        if(IsEmptyList(mylist)!=0)
        {
            p=mylist.ptail;
            mylist.ptail=mylist.ptail->prev;
            mylist.ptail->pnext=NULL;
            delete p;
        }
        else
            printf("Danh sach rong\n");
    }
    
    void RemoveAfterNode(LIST &mylist,Node *pdel)                //xoa pt node del sau node p
    {
        Node *p,*lt;
        if(IsEmptyList(mylist)!=0)
        {
            p=pdel->pnext;
            pdel->pnext=p->pnext;
            p->pnext->prev=pdel;
            delete p;
        }
        else
            printf("Danh sach rong\n");
    }
    
    Node* SearchNode(LIST &mylist,char ht[])                     //tim mot pt co info la que quan
    {
        Node *p;
        if(IsEmptyList(mylist)!=0)
        {
            p=mylist.phead;
            while(strcmp(p->info.ht,ht)!=0)
                p=p->pnext;
            if(p==NULL) 
                printf("Khong co x thoa man");
            return p;
        }
    }
    
    void BubbleSort(LIST &mylist)                            //sap xep danh sach
    {
        if(IsEmptyList(mylist)!=0)
        {
            Node *p,*q,*min;
            for(p=mylist.phead;p!=mylist.ptail;p=p->pnext)
            {
                min=p;
                for(q=p->pnext;q!=NULL;q=q->pnext)
                    if(strcmp(q->info.ht,min->info.ht)<1)
                        min=q;
                Swap(p,min);
            }
        }
        else
            printf("Danh sach rong\n");
    }
    
    void Swap(Node *&p,Node *&min)//hoan vi noi dung cua info
    {
        Person tem=p->info;
        p->info=min->info;
        min->info=tem;
    }
    void InsertNode(LIST mylist,Node *p_new)//chen node moi p_new
    {
        Node *p=mylist.phead;
        char qq[10];
        printf("chen sau nguoi co que quan la: ");scanf("%s",&qq);
        while(p!=NULL)
        {
            if(strcmp(p->info.qq,qq)==0)
            {
                AddAfterNode(mylist,p,p_new);//chen node p_new sau node p
                break;
            }
            p=p->pnext;
        }
    }
    
    void RemoveNode(LIST &mylist)
    {
        char ten[20];
        printf("nguoi can xoa co ten:  ");
        scanf("%s",&ten);
        Node *p=mylist.phead;
        while(p!=NULL)
        {
            if(strcmp(p->info.ht,ten)==0)
            {
                Node *sau=p->prev;//node sau luu dia chj cua node tiep theo
                RemoveAfterNode(mylist,sau);
                break;
            }
            p=p->pnext;
        }
    }
    void PrintfSearch(Node *tim)                //xuat node tim duoc
    {
        fflush(stdin);
        printf("Ho Ten: %-20s Que Quan: %-10s Tuoi: %-8d\n\n\n",tim->info.ht,tim->info.qq,tim->info.tuoi);
    }
    
    void menu(LIST mylist)            //ham chuc nang
    {
        char c;
        do{
    repeat:
            int so;
            Person ps;
            printf("chon chuc nang:\n\n");
            printf("\t1 :AddFirst\n");
            printf("\t2 :AddLast\n");
            printf("\t3 :AddAfterNode\n");
            printf("\t4 :RemoveFirst\n");
            printf("\t5 :RemoveLast\n");
            printf("\t6 :RemoveAfterNode\n");
            printf("\t7 :SearchNode\n");
            printf("\t8 :Sapxep\n");
            scanf("%d",&so);
            switch(so)
            {
            case 1:
                {
                    nhapds(ps);
                    Node *p=CreateNode(ps);
                    AddFirst(mylist,p);
                    break;
                }
            case 2:
                {
                    nhapds(ps);
                    Node *p=CreateNode(ps);
                    AddLast(mylist,p);
                    break;
                }
            case 3:
                {
                    printf("node can chen\n");
                    nhapds(ps);
                    Node *p_new=CreateNode(ps);
                    InsertNode(mylist,p_new);
                    break;
                }
            case 4:
                {
                    RemoveHead(mylist);
                    break;
                }
            case 5:
                {
                    RemoveLast(mylist);
                    break;
                }
            case 6:
                {
                    RemoveNode(mylist);
                    break;
                }
            case 7:
                {
                    char ht[20];
                    printf("node can tim co ten la: ");scanf("%s",&ht);
                    Node *tim=SearchNode(mylist,ht);
                    PrintfSearch(tim);
                    goto g;
                    break;
                }
            case 8:
                {
                    printf("\tSAP XEP THEO TEN:\n");
                    BubbleSort(mylist);
                    break;
                }
            default :
                {
                    printf("ban chon sai hay chon lai:\n");
                    goto repeat;
                }
            }
            PrintList(mylist);//xuat danh sach ra
    g:
            printf("\nnhan phim bat ky de tiep tuc ,thoat nhan 'N':  ");
        }while((c=getchar())!='N');
    }
    Đã được chỉnh sửa lần cuối bởi thanhanh1993 : 07-01-2013 lúc 03:48 AM.

  2. #2
    Ngày gia nhập
    02 2010
    Bài viết
    113

    rồi nó bị gì...????

  3. #3
    Ngày gia nhập
    01 2013
    Bài viết
    1

    Nó không bị gì nhưng mình muốn viết thêm phần đọc ghi dữ liệu mà không biết viết

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

  1. Lập trình C++ cần giúp về DSLK
    Gửi bởi mr.cuong_tq trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 20-06-2012, 09:51 PM
  2. Gấp!!!Mong được giúp đở về vấn đề về tách DSLK Đơn
    Gửi bởi ndp1007 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 20-12-2011, 02:18 PM
  3. Xây dựng DSLK đơn theo Hướng đối tượng, xin mọi người giúp đỡ?
    Gửi bởi nguoirung1.6 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: 10-05-2011, 12:54 PM
  4. thật toán trôn hai DSLK. Mọi người giúp với
    Gửi bởi nguoirung1.6 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 05-12-2010, 04:22 AM
  5. Cần các pác giúp DSLK
    Gửi bởi nguyenthuancn2 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 30-06-2009, 11:12 AM

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