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

Đề tài: xem hộ bài danh sách liên kết

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

    Mặc định xem hộ bài danh sách liên kết

    đây là bài danh sách liên kết mình đã code xong test vẫn sai...các bạn giúp mình với
    Code:
    #include<iostream.h>
    #include<string.h>
    #include<alloc.h>
    #include<conio.h>
    typedef struct sinhvien
    {
    	char hoten[100];
    	int namsinh;
    	float diemtb;
    	sinhvien *next;
    };
    void nhap(sinhvien*first);
    void xuat(sinhvien*first);
    void timkiem(sinhvien*first);
    void main()
    {
    //	sinhvien *p=new sinhvien[100];
    	sinhvien *first=(sinhvien*)NULL;
    	clrscr();
    	char ch;
    	do
    	{
    		cout<<"\nnhap vap N hay X  T de nhap hoac xuat va tim kiem Nhap E de thoat \n";
    		ch=getche();
    		cin.ignore(1);
    		switch(ch)
    		{
    			case 'n' : nhap(first); break;
    			case 'x' : xuat(first); break;
    			case 't' : timkiem(first); break;
    			case 'e' : break;
    		}
    	}
    	while(ch!='e');
    getch();
    
    }
    void nhap(sinhvien*first)
    {
    	sinhvien *q=new sinhvien;
    	cout<<"\nnhap ten sinh vien \n";
    	cin.getline(q->hoten,30);
    	cout<<"\nnhap diem tb\n ";
    	cin>>q->diemtb;
    	cin.ignore(1);
    	cout<<"\nnhap nam sinh ";
    	cin>>q->namsinh;
    	cin.ignore(1);
    	if(first==(sinhvien*)NULL) first=q;
    	else
    	{
    		sinhvien*p=first;
    		while(p->next !=(sinhvien*)NULL)
    			p=p->next;
    		p->next=q;
    		q->next=(sinhvien*)NULL;
    	}
    }
    void xuat(sinhvien*first)
    {
    	sinhvien*p=first;
    	while(p!=(sinhvien*)NULL)
    	{
    		cout<<p->hoten<<"  "<<p->namsinh<<"  "<<p->diemtb<<"\n";
    		p=p->next;
    	}
    
    }
    void timkiem(sinhvien*first)
    {
    	sinhvien*p=first;
    	char ten[50];
    	cout<<"\nnhap vao ten can tim\n";
    	cin.getline(ten,30);
    	while(strcmp(p->hoten,ten)!=0 && p!=(sinhvien*)NULL)
    		p=p->next;
    	if(p==(sinhvien*)NULL) cout<<"\nKHong tim thay";
    	else
    		{
    			cout<<p->hoten<<"  "<<p->namsinh<<"  "<<p->diemtb<<"\n";
    		}
    }

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

    Với danh sách liên kết,tốt nhất nên sử dụng lớp list của thư viện STL,không cần phải cài đặt phức tạp gì cả,rất gọn nhẹ dễ sử dụng

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    22

    Bạn ấy học để thi mà bác kêu xài STL, phang toàn STL vào bài thi thì ... T.T
    Câu 1: Xây dựng DSLK bằng con trỏ
    Trả lời: Chỉ việc include<list> vào rồi xài thôi
    ...

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Chạy được ra kết quả như ý rồi đó bạn, tuy nhiên chương trình làm hơi chán một chút. Mà gán NULL luôn không cần dùng (sinhvien*)NULL đâu.

    Mà một điều mình khuyên bạn, nên dùng đúng chuẩn ANSI và một compiler chuẩn. Bạn cứ học và sử dụng cái cũ như này mọi người sẽ khó test dùm bạn được. Nhiều chương trình bạn làm mình chỉ có thể đọc chay test bằng mắt.
    C++ Code:
    1. #include<iostream.h>
    2. #include<string.h>
    3. #include<alloc.h>
    4. #include<conio.h>
    5. typedef struct sinhvien
    6. {
    7.     char hoten[100];
    8.     int namsinh;
    9.     float diemtb;
    10.     sinhvien *next;
    11. };
    12. void nhap(sinhvien *&first);  //////////
    13. void xuat(sinhvien *first);
    14. void timkiem(sinhvien *first);
    15. int main()
    16. {
    17. //  sinhvien *p=new sinhvien[100];
    18.     sinhvien *first=(sinhvien*)NULL;
    19.     clrscr();
    20.     char ch;
    21.     do
    22.     {
    23.         cout<<"\nnhap vap N hay X  T de nhap hoac xuat va tim kiem Nhap E de thoat \n";
    24.         ch=getche();
    25.         cin.ignore(1);
    26.         switch(ch)
    27.         {
    28.             case 'n' : nhap(first); break;
    29.             case 'x' : xuat(first); break;
    30.             case 't' : timkiem(first); break;
    31.             case 'e' : break;
    32.         }
    33.     }
    34.     while(ch!='e');
    35.     getch();
    36.  
    37. }
    38. void nhap(sinhvien*&first)
    39. {
    40.     sinhvien *q=new sinhvien;
    41.     cout<<"\nnhap ten sinh vien \n";
    42.     cin.getline(q->hoten,30);
    43.     cout<<"\nnhap diem tb\n ";
    44.     cin>>q->diemtb;
    45.     cin.ignore(1);
    46.     cout<<"\nnhap nam sinh ";
    47.     cin>>q->namsinh;
    48.     cin.ignore(1);
    49.     if(first==(sinhvien*)NULL)
    50.     {
    51.         first=q;
    52.         first->next=NULL;   //thu ra chi can the nay thoi
    53.     }                       // khong can phai (sinhvien*)NULL
    54.     else
    55.     {
    56.         sinhvien*p=first;
    57.         while(p->next !=(sinhvien*)NULL)
    58.             p=p->next;
    59.         p->next=q;
    60.         q->next=(sinhvien*)NULL;
    61.     }
    62. }
    63. void xuat(sinhvien*first)
    64. {
    65.     sinhvien*p=first;
    66.     while(p!=(sinhvien*)NULL)
    67.     {
    68.         cout << endl << p->hoten<<"  "<<p->namsinh<<"  "<<p->diemtb<<"\n";
    69.         p=p->next;
    70.     }
    71.  
    72. }
    73. void timkiem(sinhvien*first)
    74. {
    75.     sinhvien*p=first;
    76.     char ten[50];
    77.     cout<<"\nnhap vao ten can tim\n";
    78.     cin.getline(ten,30);
    79.     while(strcmp(p->hoten,ten)!=0 && p!=(sinhvien*)NULL)
    80.         p=p->next;
    81.     if(p==(sinhvien*)NULL) cout<<"\nKHong tim thay";
    82.     else
    83.         {
    84.             cout<<p->hoten<<"  "<<p->namsinh<<"  "<<p->diemtb<<"\n";
    85.         }
    86. }

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Tặng bạn cái QLSV cũng sử dụng link list tương tự bài của bạn để tham khảo thêm. Sử dụng compiler Code::Block, Dev C++, or VC++

    Mà chỉ quan tâm phần link list thôi nhé, vì cái này chưa hoàn chỉnh, sau này mình sẽ bổ sung phần lưu file.
    Attached Files Attached Files

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

    Mặc định xem hộ bài danh sách liên kết

    thực ra mình cũng có DEVC hay VSC++2005 nhưng mình không biết cách debug nên mình không xài bạn có hướng dẫn thì cho mình xin nhé...thực ra mình đọc cái QLSV full đó không hiểu hết đc nhất là mấy cái _data..nhưng mình đọc sách thế này muốn viết theo chuẩn ANSI thì làm thế nào...bối rối quá.....help me please

  7. #7
    Ngày gia nhập
    02 2009
    Bài viết
    22

    Bạn kiếm cuốn "How to program C++" mà đọc, nó cũng khá chuẩn mực đấy.

  8. #8
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bạn kiếm cuốn "How to program C++" mà đọc, nó cũng khá chuẩn mực đấy.
    Cuốn đó trong phần ebook của diễn đàn có.

    Chuẩn ở đây không phải cái gì ghê gớm đâu, bạn cứ dùng cứ dùng devC++ đó và sử dụng các hàm và thư viện chuẩn, tham khảo ở đây http://cplusplus.com. Tức nó là chuẩn mới nên không dùng các head for dos như: dos.h, alloc.h,... Hàm main() thì dùng int main(); ...

  9. #9
    Ngày gia nhập
    07 2008
    Bài viết
    30

    ừ cám ơn các bạn nhiều

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

  1. Hướng dẫn Biểu diễn thích hợp bằng danh sách liên kết đơn hoặc danh sách liên kết kép
    Gửi bởi maitrung trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 3
    Bài viết cuối: 04-08-2012, 08:01 PM
  2. Cấu trúc dữ liệu Cách tạo danh sách liên kết mới từ danh sách liên kết đã cho như thế nào?
    Gửi bởi giacmo1612 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 2
    Bài viết cuối: 30-11-2011, 04:43 PM
  3. Nhập và xuất danh sách liên kết lồng danh sách liên kết?
    Gửi bởi nvluong_it 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: 22-04-2011, 11:30 AM
  4. Lập trình C Danh sách liên kết - Xử lý danh sách liên kết trong lập trình C
    Gửi bởi phucduan 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: 08-11-2010, 10:25 PM
  5. Danh sách liên kết, code nhập danh sách sinh viên có lỗi làm sao sửa?
    Gửi bởi acmilan 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: 10-04-2009, 08:24 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