Cấu trúc dữ liệu kiểu mới

Thảo luận trong 'Khoa Khoa Học Máy Tính' bắt đầu bởi withyou, 23 Tháng mười 2010.

  1. Offline

    withyou

    • Windows 3.0

    Số bài viết:
    99
    Đã được thích:
    30
    Điểm thành tích:
    40
    Nghe thầy Cẩm dạy CTDl bảo là làm theo cấu trúc dữ liệu "mới " mới được chấp nhận . bạn nào biết kiểu mới của thầy là như thế nào không. mình dùng kiểu struct cho hàng đợi và ngăn xếp là đúng kiểu CTDL rồi.
    Nghe đồn là dùng mảng 1 chiều và truyền từng biến như top, front, rear cho nó, như thế thủ công quá ??
    Bạn nào trả lời cái !
  2. Offline

    final

    • Thành Viên Mới

    Số bài viết:
    170
    Đã được thích:
    232
    Điểm thành tích:
    0
    thầy đúng là bắt ép sv quá vì toàn bộ 3 lớp lt tìm ra người hiểu cấu trúc mới của thầy chắc đếm trên đầu ngón tay quá ! lớp nào chứ LT3a thì ko ai hiểu là chắc rùi đó!! ai biết thì giúp đở với nha..............!!!!! thank nhiều
  3. Offline

    hoekaka

    • Windows 95

    Số bài viết:
    359
    Đã được thích:
    114
    Điểm thành tích:
    90
    mới là
    ở danh sách đặc là khi khai báo cấu trúc dữ liệu ko dùng typedef struct để định nghĩa .. mà khai báo một cái mảng bình thường. Ở kiểu cũ kiểu dữ liệu có trường last, bây h last đc khai báo là 1 biến bình thường. Khi khai báo hàm thì khai báo cái biến last đó kiểu con trỏ.

    còn danh sách liên kết thì bình thường giống slide
  4. Offline

    dinhngocbao

    • Thành Viên Mới

    Số bài viết:
    282
    Đã được thích:
    107
    Điểm thành tích:
    0
    thầy ctdl dạy hay lắm đóa :012:
  5. Offline

    final

    • Thành Viên Mới

    Số bài viết:
    170
    Đã được thích:
    232
    Điểm thành tích:
    0
    hay ho gì từ đầu năm đến giờ ngồi học được bao nhiều tiết mà hót... đúng là ......
  6. Offline

    hoekaka

    • Windows 95

    Số bài viết:
    359
    Đã được thích:
    114
    Điểm thành tích:
    90
    thầy dạy hơi khác với phần đông tài liệu trên mạng .. nhưng dạy hay mà :D
  7. Offline

    minhtam

    • Windows 98

    Số bài viết:
    460
    Đã được thích:
    177
    Điểm thành tích:
    140
    BON CHEN VÀI BÀI (CÓ THỂ CHƯA RA KẾT QUẢ)
    DANH SÁCH ĐẶC
    +HÀNG ĐỢI:
    bài này ra rồi

    Mã:
    #include<stdio.h>
    #include<conio.h>
    #include<iostream.h>
    
    int Queue[50];
    int front,rear;
    void chen(int &n,int Queue[],int &front , int &rear)
    {
        front=0;
        cout<<"nhap hang doi:\n";
        for(int i=1; i<=n; i++)
        {
            cout<<"so thu "<<i<<" la: ";
            cin>>Queue[i];
            rear++;
            Queue[rear]=Queue[i];
        }
    }
    void xuat(int Queue[])
    {
    
        for(int i=front; i<=rear; i++)
        {
            cout<<"\t"<<Queue[i];
        }
    }
    
    void popQ(int &x,int Queue[],int &front,int &rear)
    {
        if(front==-1)
            printf("\nhang rong");
        else
        {
            x=Queue[front];
            front=front+1;
            if(front>rear)
            {
                front=-1;
                rear=-1;
            }
        }
    }
    void pushQ(int x,int Queue[],int &front,int &rear)
    {
        if(rear-front+1==50)     //hang rong
            printf("hang day");
        else
        {
            if(front==-1)
                front=0;
            if(rear==49)    //rear o cuoi
            {
                for(int i=front; i<=rear; i++)
                    Queue[i-front]=Queue[i];
                rear=50-front-1;
                front=0;
            }
            rear=rear+1;
            if(front==0)
                Queue[rear]=x; //them hang tren Queue[rear]=x;
        }
    }
    void main()
    {
        int x;
        int i,n;
        clrscr();
        front=-1;
        rear=-1;
        cout<<"nhap so phan tu cua hang doi:";
        cin>>n;
        chen(n,Queue,front,rear);
        cout<<"hang doi vua nhap la:\n";
        xuat(Queue);
        cout<<"\nnhap pt can them:  ";
        cin>>x;
        cout<<"hang doi sau khi them: ";
        pushQ(x,Queue,front,rear);
        xuat(Queue);
        cout<<endl;
        cout<<"hang doi sau khi xoa phan tu dau hang : ";
        popQ(x,Queue,front,rear);
        xuat(Queue);
        getch();
    }
    
    
    +DANH SÁCH ĐẶC BÌNH THƯỜNG

    Mã:
    #include<iostream.h>
    #include<conio.h>
    #define max 30
    int dt[max];
    int last;
    
    int tim(int x,int dt[])//tim phan tu x trong danh sach
    {
        int i=1,d=0;
        if(last==0)
            cout<<"\n danh sach rong";
        else
        {
            while(i<last && d==0)
            {
                if(dt[i]==x)
                    d=1;
                else 	i++;
            }
        }
        if(d==0) return 0;
        else 	return i;
    }
    
    void chen(int x,int n,int dt[])//chen phan tu x vao vi tri n trong danh sach
    {
        if(last==max)
            cout<<"\ndanh sach day";
        else if(n<1||n>last+1)
            cout<<"\n Loi vi tri";
        else
        {
            for(int i=last; i>=n; i--)
                dt[i+1]=dt[i];
            dt[n]=x;
            last++;
        }
    }
    
    void xoa(int m,int dt[])//xoa phan tu o vi tri m trong danh sach
    {
        if(last==0)
            cout<<"\ndanh sach rong";
        else if(m<1||m>last+1)
            cout<<"\nLoi vi tri ";
        else
        {
            for(int i=m; i<=last; i++)
                dt[i]=dt[i+1];
            last--;
        }
    }
    
    void xem(int dt[])//xuat danh sach ra man hinh
    {
        for(int i=1; i<=last; i++)
        {
            cout<<" \t  "<<dt[i];
        }
    }
    
    void nhap(int dt[],int n,int last)//nhap gia tri cho danh sach
    {
        cout<<"nhap vao so phan tu cua danh sach:";
        cin>>n;
        for(int i=1; i<=n; i++)
        {
            cout<<"nhap phan tu thu "<<i<<" ";
            cin>>dt[i];
            last++;
            dt[last]=dt[i];
            cout<<endl;
        }
    }
    //chuong trinh cu the de xoa tat ca cac phan tu nho hon 10 co trong danh sach & chen phan tu 20 vao vi tri thu 10.
    void main()
    {
        int n;
        int dk=1;
        char c;
        while(dk)
        {
            clrscr();
            nhap(dt,n,last);
            xem(dt);
            cout<<"\nDanh sach khi da xoa cac phan tu nho hon 10 la\n ";
            for(int i=1; i<=last; i++)
            {
                if(dt[i]<10)
                {
                    xoa(i,dt);
                    i--;
                }
            }
    
            xem(dt);
            cout<<"\nDanh sach khi da them 20 vao vi tri 10 la\n ";
            chen(20,10,dt);
            xem(dt);
            cout<<"\nCo tiep tuc ko y/n ";
            cin>>c;
            if(c=='y') dk=1;
            else dk=0;
        }
    
        getch();
    }
    
    

    DANH SÁCH LIÊN KẾT

    Mã:
    #include<iostream.h>
    #include<conio.h>
    typedef struct Node
    {
        char ht[30];
        int ns;
        float dtb;
        struct Node *link;
    } DS;
    DS *L;
    void taods(DS **L,char x[30], int y, float z)
    {
        DS *p;
        p= new DS;
        p->ht[30]=x[30];
        p->ns=y;
        p->dtb=z;
        p->link =*L;
        *L=p;
    }
    void xuatds(DS *L)
    {
        DS *p;
        p=L;
        while (p!=NULL)
        {
            cout<<p->ht[30]<<"\t"<<cout<<p->ns<<"\t"<<cout<<p->dtb<<"";
            p= p->link ;
        }
        cout<<"\n";
    }
    void main()
    {
        DS *L;
        char x[30];
        int y;
        float z;
        int dk=1;
        char c;
        clrscr();
        while (dk)
        {
            cout<<"nhap ho ten :\n";
            cin>>x;
            cout<<"nhap nam sinh:\n";
            cin>>y;
            cout<<"nhap diem trung binh:\n";
            cin>>z;
            taods(&L,x,y,z);
            cout<<"ban co muon them vao danh sach ko?y/n  ";
            cin>>c;
            if(c=='y')
                dk=1;
            else dk=0;
        }
        xuatds(L);
        getch();
    }
    
    
    bài này chưa xuất họ tên được

    BÀI CÂY
    Mã:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    typedef int tdata;
    typedef struct tnode
    {
        tdata data;
        tnode *left;
        tnode *right;
    } ;
    typedef tnode *Ttree;
    Ttree insert(tdata v,Ttree l,Ttree r)
    {
        Ttree n;
        n=new tnode;
        n->data=v;
        n->left=l;
        n->right=r;
        return n;
    }
    void preorder(Ttree T)
    {
        Ttree p;
        p=T;
        if(p!=NULL)
        {
            printf("%d\t",p->data);
            preorder(p->left);
            preorder(p->right);
        }
    }
    void inorder(Ttree T)
    {
        Ttree p;
        p=T;
        if(p!=NULL)
        {
            inorder(p->left);
            printf("%d\t",p->data);
            inorder(p->right);
        }
    }
    void posorder(Ttree T)
    {
        Ttree p;
        p=T;
        if(p!=NULL)
        {
            posorder(p->left);
            posorder(p->right);
            printf("%d\t",p->data);
        }
    }
    int dem(Ttree T)
    {
        Ttree p;
        int demnut=0;
        p=T;
        if(p!=NULL)
            demnut=dem(p->left)+dem(p->right)+1;
        return demnut;
    }
    void main()
    {
        clrscr();
        int demnut;
        float h=0;
        Ttree T;
        T=insert(50,insert(25,NULL,insert(10,insert(38,NULL,insert(9,insert(7,NULL,insert(17,insert(8,NULL,NULL),insert(18,NULL,NULL))),NULL)),NULL)),NULL);
        printf("tien to\n");
        preorder(T);
        printf("\n");
        printf("trung to\n");
        inorder(T);
        printf("\n");
        printf("hau to\n");
        posorder(T);
        printf("\n");
        printf("so nut trong cay la %d",dem(T));
        printf("\n");
        printf("chieu cao cua cay la %f",h);
        h=log(dem(T)+1)/log(2);
        getch();
    }
    
    
  8. Offline

    dinhngocbao

    • Thành Viên Mới

    Số bài viết:
    282
    Đã được thích:
    107
    Điểm thành tích:
    0
    chú này chả hiểu ý anh gì cả ..
  9. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    1 mảng cũng có cấu trúc mà. có phần tử đầu, phần tử cuối, có thể xử lý các phần tử trong mảng. có thể tìm kiếm, sắp xếp... được tính là dữ liệu có cấu trúc.
    đây là 1 số bài đơn giản, những cấu trúc phức tạp hơn không thể dùng cách mới này được, vì 1 hàm phải truyền cho nó cả dãy tham số, rất dễ gây nhầm lẫn.

    @minhtam: post code nhớ bỏ vô thẻ [CODE /CODE] nghe. với lại trình bày dễ nhìn chút. mình đã chỉnh lại rồi đó.
  10. Offline

    cuibapvn

    • Windows 2.0

    Số bài viết:
    32
    Đã được thích:
    25
    Điểm thành tích:
    20
    đúng là khó hiểu ông thầy ni , chỉ thì không chỉ mà thi lại nói phải làm kiểu mới , mới như ổng thì học cấu trúc dữ liệu làm gì tìm cái nào mới nhất mà học :))
  11. Offline

    ka_vipop1990

    • Thành Viên Mới

    Số bài viết:
    5
    Đã được thích:
    0
    Điểm thành tích:
    0
    troi chac hoc di hoc lai moi chac duoc qua hihi
    mon nay thay day kho hieu qua !!!:021:
  12. Offline

    haihung_9x

    • Friends

    • Chém gió đỉnh cao
    Số bài viết:
    353
    Đã được thích:
    271
    Điểm thành tích:
    220
    Thôi anh em đành học thuộc vậy ka ka :handshake::complaint:

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí