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

Đề tài: DSLK trong C++ còn cách nào hay hơn không ?

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định DSLK trong C++ còn cách nào hay hơn không ?

    class DATA_NODE
    {
    private:
    char name[20];
    int age;
    public:
    void input();
    void output();

    };
    class LINK_LIST
    {
    private:
    LINK_LIST *first;
    LINK_LIST *next;
    DATA_NODE DT;
    public:
    void intiliaze();
    void input();
    void output();


    };
    // Input data into a node in DATA_NODE
    void DATA_NODE::input()
    {
    cout << "What ur name : "<<endl;
    cin.ignore(1);
    cin.getline(name,20);
    cout<< "And How old are u: ";
    cin >> age;
    }

    // Output data from a node in DATA_NODE
    void DATA_NODE::output()
    {
    cout <<name <<" is " << age << " year old " <<endl;
    }

    // begin first value of pointer first
    void LINK_LIST::intiliaze()
    {
    first = NULL;
    }
    // Input data in a links list
    void LINK_LIST::input()
    {
    LINK_LIST *check;
    int t;
    while(1)
    {
    cout << " Do u want continue :(please, press 1/0 if u wanna continue/abort " <<endl;
    cin >>t;
    if(t==0)
    return;
    if(first == NULL )
    {
    first = new LINK_LIST;
    check = first;
    }
    else
    {
    check->next = new LINK_LIST;
    check=check->next;
    }

    check->DT.input();
    check->next=NULL;
    }
    }

    void LINK_LIST::output()
    {
    LINK_LIST *check;
    if(first == NULL )
    {
    cout << " Link list is empty " << endl;
    return ;
    }
    check=first;
    do
    {

    check->DT.output();
    check=check->next;
    }while(check != NULL);
    }
    void main()
    {
    LINK_LIST data1;
    data1.intiliaze();
    cout<<"Input imformation for data1"<<endl;
    data1.input();
    cout<<"Output imformation which u had written "<<endl;

    data1.output();
    }
    Chạy thì đúng nhưng thấy dở dở sau ấy ? Có ý kiến gì thì post lên cùng thảo luận nhé !

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    ặc ặc, quá dở nữa là đằng khác

    ai lại viết list mà fix với 1 kiểu dữ liệu cho element cơ chứ, mình hỏi bạn nhé, bây giờ mình muốn có list các số integer thì phải viết lại lớp LinkedListInt khác à

    prototype thì như thế này hay hơn
    Code:
    template <class T>
    class LinkedList {
     protected:
      struct Node { //inner class
        Node *next;
        Node *pre;
        T data;
      }
     Node *first; //or last if you like
    }
    Khi đó, muốn dùng LinkedList cho kiểu dữ liệu nào cũng được

    Code:
    LinkedList<int> alistInt;  //list cho số nguyên
    LinkedList<Student> alistStudent;  //list cho struct hay class Student

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Ặc thứ nhất không biết cái
    template <class T>
    là cái gì để về nhà đọc sách sau .

    Thứ 2 là để cho 1 list số nguyên hay bất cử kiểu gì đi chăng nữa kid nghĩ chỉ cần đổi lại cái class DATA_NODE thôi chứ không hề đổi lại cả link list .Cái kid thấy hay là code này viết rất tự nhiên ( nên mới không hay ) . Và nếu mình tạo ra một object thì nó có sẵn các method , chỉ việc gọi thôi mà không cần viết thêm gì nữa . Không biết ý kiến cậu thế nào

    Thứ 3 nữa tớ muốn nghiên cứu thêm chứ không hiểu code của cậu lắm , có lẽ có gì hay trong đó nếu rãnh thì cậu post giải thích cho anh em luôn ok ?

    Note : Chắc tớ còn phiền cậu dài dài .
    Đã được chỉnh sửa lần cuối bởi kidkid : 09-05-2007 lúc 07:14 PM.

  4. #4
    Ngày gia nhập
    04 2007
    Bài viết
    128

    Code:
    typedef long KieuDL;
    typedef struct NUT
    {
    	struct NUT(long dl)
    	{
    		this->duLieu=dl;
    		this->tiep=NULL;
    	}
    	KieuDL duLieu;
    	struct NUT* tiep;
    }NUT;
    Mình thường khai báo nút bằng struct, 1 nút có thể chứa được nhiều thông tin hơn chứ không phải chỉ dulieu thôi đâu, thay vì khai báo nó là một đối tượng cần nhiều thủ tục hơn. Khi tạo nút mới với dulieu mới thì chỉ cần
    NUT *p=new NUT(dulieu)

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    Thứ 2 là để cho 1 list số nguyên hay bất cử kiểu gì đi chăng nữa kid nghĩ chỉ cần đổi lại cái class DATA_NODE thôi chứ không hề đổi lại cả link list .Cái kid thấy hay là code này viết rất tự nhiên ( nên mới không hay ) . Và nếu mình tạo ra một object thì nó có sẵn các method , chỉ việc gọi thôi mà không cần viết thêm gì nữa . Không biết ý kiến cậu thế nào
    u`, đúng là đổi ít đấy, nhưng rồi thì vẫn chưa dùng được
    bạn xét thử trường hợp này, trong cùng 1 ct

    Khai báo, và dùng list Student, sau đó không thể khai báo và dùng list int, vì cậu đâu thể sửa lại struct DATA_NODE được nữa, cậu phải tạo struct INT_DATA_NODE, nhưng mà trong class list đã cố định là DATA_NODE DT; túm lại là nếu muốn có ListInt cậu vẫn phải viết thêm class listInt
    túm lại là với cách viết trên của cậu thì 2 kiểu list không thể cùng có trong 1 ct

    hay nhất là cậu tham khảo cái template mà mình đã gợi ý ở trên
    Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 10-05-2007 lúc 11:55 AM.

  6. #6
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Mặc định DSLK trong C++ còn cách nào hay hơn không ?

    Tóm lại là đọc OOP nhỉ

  7. #7
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    hay nhất là cậu tham khảo cái template mà mình đã gợi ý ở trên
    Tóm lại là đọc OOP nhỉ
    # Sẽ nguyên cứu , cảm ơn anh em ?

  8. #8
    Ngày gia nhập
    04 2007
    Bài viết
    128

    Thế thì khai báo thế này
    Code:
    typedef struct Nut
    {
    	int MSV;
    	KieuDL duLieu;
    	char *ten;
    	int diem[10];
    	float dTB;
    	struct Nut *tiep;
    	struct Nut(int MSV,char ten[],int diem[])	
    	{
    
    		this->MSV=MSV;
    		this->ten=ten;
    		for(int i=0;i<10;i++)
    			this->diem[i]=diem[i];
    		this->tiep=NULL;
    	};
    }NUT;
    Tùy trường hợp mà khai báo cái kieuDL duLieu chỉ là để minh họa thôi mà, làm thế này thì trong tường hợp sắp xếp danh sách sinh viên theo tên,hay theo điểm số cũng trở nên đơn giản, là dùng các thuật toán sắp xếp cho DSLK đã có sẵn thôi, vì 1 nút chứa tất cả thông tin của sinh viên truy cập tất cả?ok! truy cập chỉ 1 vài cái?ok!

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

  1. Lỗi xóa DSLK sau khi xử lí DSLK trong hàm.
    Gửi bởi darkboys trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 01-05-2013, 01:24 AM
  2. Chuyển từ DSLK đơn sang DSLK kép
    Gửi bởi thaihoa91 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: 04-05-2011, 07:47 PM
  3. Code cài đặt DSLK đơn vòng và kép vòng trên C++. Thêm 1 phần tử sau 1 phần tử trong DSLK đơn/kép
    Gửi bởi hoanghieu.fit.hcmus trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 09-04-2011, 02:54 PM
  4. chèn giữa một đối tượng trong DSLK đơn
    Gửi bởi gachoai 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: 02-03-2011, 07:52 PM
  5. Lỗi trong DSLK Đơn!
    Gửi bởi bqonline trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 31-08-2009, 09:06 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