Information Technology VietNam

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

3 posters

    Bai tap 3.1 su dung danh sach lien ket doi

    ban_tuongky
    ban_tuongky
    Moderator
    Moderator


    Giới tính : Nam Bài gửi : 91
    Tổng Điểm : 198
    Điểm Thưởng : 0
    Bị Dụ Dỗ : 11/09/2009

    Bai tap 3.1 su dung danh sach lien ket doi Empty Bai tap 3.1 su dung danh sach lien ket doi

    Bài gửi by ban_tuongky 13/11/2009, 15:15

    Ghi chú của người quản lý: Tất cả các code của tất cả các ngôn ngữ bạn đều phải bỏ vào thẻ code để hiện thị đúng nhất đoạn code, nếu không một số lệnh sẽ bị thực thi ví dụ conio.h sẽ biến mất. Bạn có thể bỏ đoạn code vào thẻ code bằng cách bôi đen nó và nhấn vào hình [<>] ở trên thanh công cụ. Chú ý nha


    Code:
    #include <conio.h>
    #include <stdio.h>
    #include <iostream>
    typedef struct DNode
    {
        int info;
        DNode *next;
        DNode *pre;
    };
    typedef struct DList
    {
        DNode *head;
        DNode *tail;
    };
    void init(DList &L);
    DNode *getnode(int x);
    void addtail(DList &L,DNode *new_ele);
    DNode *inserttail(DList &L,int x);
    void nhap(DList &L);
    void xuat(DList L);
    void main()
    {
        int a,x;
        DList L;
        init(L);
        nhap(L);
        xuat(L);
        getch();
    }
    void init(DList &L)
    {
        L.head=L.tail=NULL;
    }
    DNode *getnode( int x)
    {
        DNode *p;
        p=new DNode;
        if(p==NULL)
        {
            printf("khong du bo nho\n");
            return NULL;
        }
        p->info=x;
        p->next=NULL;
        return p;
    }
    void addtail(DList &L,DNode *new_ele)
    {
        if(L.head==NULL)
        {
            L.head=new_ele;
            L.tail=L.head;
        }
        else
        {
            L.tail->next=new_ele;
            L.tail=new_ele;
        }
    }
    DNode *inserttail(DList &L,int x)
    {
        DNode *new_ele=getnode(x);
        if(new_ele==NULL)
            return NULL;
        addtail(L,new_ele);
            return new_ele;
    }
    void nhap(DList &L)
    {
        DNode *p;
        int x;
        char traloi;
        do
        {
            printf("nhap vao gia tri    ");
            scanf("%d",&x);
            inserttail(L,x);
            cout<<"nhap tiep khong(Y/N)  ";
            cin>>traloi;
        }while(traloi=='Y'||traloi=='y');
    }
    void xuat(DList L)
    {
        DNode *p;
        for(p=L.head;p!=NULL;p=p->next)
            cout<<p->info<<"  ";
        cout<<"\n";
    }
    ban_tuongky
    ban_tuongky
    Moderator
    Moderator


    Giới tính : Nam Bài gửi : 91
    Tổng Điểm : 198
    Điểm Thưởng : 0
    Bị Dụ Dỗ : 11/09/2009

    Bai tap 3.1 su dung danh sach lien ket doi Empty Re: Bai tap 3.1 su dung danh sach lien ket doi

    Bài gửi by ban_tuongky 13/11/2009, 15:16

    chay chu duoc dep lam cac ban sua dum minh nha. Thank you !!! Bai tap 3.1 su dung danh sach lien ket doi 982616
    Vy Thanh Định
    Vy Thanh Định
    Web Master
    Web Master


    Giới tính : Nam Bài gửi : 228
    Tổng Điểm : 544
    Điểm Thưởng : 16
    Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Bai tap 3.1 su dung danh sach lien ket doi Empty Re: Bai tap 3.1 su dung danh sach lien ket doi

    Bài gửi by Vy Thanh Định 13/11/2009, 20:31

    Làm khá tốt, nhất là phần khởi tạo, tuy nhiên chỉ nhập xuất thì không thể hiện đc cái chữ liên kết đôi, cố gắng thử với các thao tác nữa nha. Thanks for posting
    kocogi
    kocogi
    Member
    Member


    Giới tính : Nam Bài gửi : 22
    Tổng Điểm : 24
    Điểm Thưởng : 0
    Sinh Nhật : 18/03/1990 Bị Dụ Dỗ : 26/11/2009
    Tuổi : 34

    Bai tap 3.1 su dung danh sach lien ket doi Empty Re: Bai tap 3.1 su dung danh sach lien ket doi

    Bài gửi by kocogi 26/11/2009, 21:45

    Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    struct node {
          int val;
          node *prev;
          node *next;
    };

    struct list {
                node *fst;
                node *lst;
          };

    void init(list &a){
        a.fst = a.lst = NULL;
    }

    node* new_val(int val){
        node *p;
        p = (node*) malloc(sizeof(node));
        p->val = val;
        return p;
    }

    void make_list(list &a,int val){
        node *p = new_val(val);
        p->prev = a.lst;
        p->next = NULL;
        if (a.fst == NULL) a.lst = a.fst = p;
        else
        {
            (a.lst)->next = p;
            a.lst = (a.lst)->next;
        }
    }

    node *found(list &a,int val){
        node *p = a.fst;
        while (p != NULL && p->val != val) p=p->next;
        return p;
    }

    void insert(list &a,node *k,int val){ //insert val vao sau node k
        if (k == NULL) return ;
        node *p = new_val(val);
        p->next = k->next;
        k->next = p;
        p->prev = k;
        if (k == a.lst) a.lst = p;
    }

    void del(list &a,node *k){ //delete node k
        if (k == NULL) return ;
        node *trc = k->prev;
        node *sau = k->next;

        if (trc != NULL) trc->next = sau;
        else a.fst = sau; //k la con tro dau
        if (sau != NULL) sau->prev = trc;
        else a.lst = trc; //k la con tro cuoi
        k->prev = k->next = NULL;
        free(k);
    }

    void xuat(list a){
        node *p;
        p = a.fst;
    //    p = a.lst;
        while (p != NULL){
              printf(" %d",p->val);
              p = p->next;
    //          p = p->prev;
        }
        printf("\n");
    }
    int main(){
        int t;
        list a;
        FILE *fi = fopen("a.in","r");
        init(a);
        while (fscanf(fi,"%d",&t) != EOF) make_list(a,t);
        fclose(fi);
        printf("Danh sach ban dau :\n");
        xuat(a);
        insert(a,found(a,31),10);
        xuat(a);
        del(a,found(a,19));
        xuat(a);
    }
    kocogi
    kocogi
    Member
    Member


    Giới tính : Nam Bài gửi : 22
    Tổng Điểm : 24
    Điểm Thưởng : 0
    Sinh Nhật : 18/03/1990 Bị Dụ Dỗ : 26/11/2009
    Tuổi : 34

    Bai tap 3.1 su dung danh sach lien ket doi Empty Re: Bai tap 3.1 su dung danh sach lien ket doi

    Bài gửi by kocogi 26/11/2009, 21:47

    ngắn hơn, nhanh hơn, khó hiểu hơn nhưng hội đủ đ/k of 1 bài toán Bai tap 3.1 su dung danh sach lien ket doi 812990

    Sponsored content


    Bai tap 3.1 su dung danh sach lien ket doi Empty Re: Bai tap 3.1 su dung danh sach lien ket doi

    Bài gửi by Sponsored content


      Hôm nay: 2/11/2024, 20:40