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

Đề tài: Tạo danh sách liên kết, xin chỉ giáo

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

    Mặc định Tạo danh sách liên kết, xin chỉ giáo

    Mình đang tạo một danh sách liên kết: Nhập họ tên sv,chiều cao rồi tính cân nặng tiêu chuẩn cntc = cc*100 - 105.
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    #include <alloc.h>
    #include <string.h>
    typedef char infor1[30];
    typedef float infor2;
    typedef int infor3;
    struct element
    {
        
    infor1 ht;
       
    infor2 cc;
       
    infor3 cntc;
       
    element *next;
    };
    typedef element *list;
    list 
    L;
    void creat_list(list *L);
    void main()
    {
       
    creat_list(&L);
       
    getch();
    }
    void creat_list(list *L)
    {
        list 
    P;
       
    L=NULL;
       
    infor1 name;
       do
       {
             
    printf("Nhap ten: ");
           
    gets(name);
          if(
    name[0]!='\0')
          {
                
    P=(list)calloc(1,sizeof(list));
             
    strcpy(P->ht,name);
              
    printf("Chieu cao: "); scanf("%f",&P->cc);
             
    P->cntc=P->cc*100-105;
                 while(
    getchar()!='\n');
             
    P->next=*L;
             *
    L=P;
          }
       }
       while(
    name[0]!='\0');

    Chương trình nhập tên và chiều cao xong thì hiện ra bảng thông báo với dòng sau:
    "Thread stopped C:\Other\Lap trinh C\Linked List 2.exe: Fault: access violation at 0x4011b3: read of address 0x0" tại dòng
    PHP Code:
    P->next=*L
    Xin các bác chỉ giáo, em chỉ mới là dân học nghề thôi!

  2. #2
    Ngày gia nhập
    10 2008
    Nơi ở
    07T1 - DUT
    Bài viết
    101

    Ở đây bạn tạo danh sách liên kết theo kiểu chèn trước nhưng sai vài chỗ như : đầu vào của hàm phải là list &L.và hàm malloc phải là kiểu element.Cuối cùng phải là P->next=L,L=P.nhưng nếu bạn tạo hàm creatlist như vậy thì số element sẽ cố định sau mỗi lần gọi hàm và không có tính linh hoạt của danh sách liên kết
    Đã được chỉnh sửa lần cuối bởi hoangsan_c : 17-03-2009 lúc 09:17 PM.

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    8

    Lại làm phiền các bác nữa...
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    typedef char infor1[30];
    typedef int infor2;
    typedef float infor3;
    struct element
    {
       
    infor1 ht;
       
    infor2 cc;
       
    infor3 cntc;
       
    struct element *next;
    };
    typedef element *List;
    List 
    L;
    void Menu(int &i)
    {
       
    printf("\n\nBANG CHUC NANG\n");
       
    printf("1. Tao mot danh sach\n");
       
    printf("2. Liet ke danh sach\n");
       
    printf("Ban chon: \t"); scanf("%d",&i);
    }
    void CreateList()
    {
       
    char x[30];
       
    L=NULL;
       List 
    P;
       do
       {
          
    fflush(stdin);
          
    printf("Nhap ho ten:\t"); gets(x);
          if(
    x[0]!='\0')
          {
             
    P=new element;
             
    strcpy((*P).ht,x);
             
    printf("Nhap chieu cao:\t"); scanf("%f",&(*P).cc);
         (*
    P).cntc=(*P).cc*100-105;
         (*
    P).next=L;
              
    L=P;
          }
       } while(
    x[0]!='\0');
    }
    void DisplayList(List &L)
    {
        List 
    P;
        
    P=L;
            while(
    P!=NULL)
            {
               
    printf("%20s%7.2f%7d",(*P).ht,(*P).cc,(*P).cntc);
                
    P=(*P).next;
            }
    }
    void main()
    {
       
    int i;
       do
       {
          
    Menu(i);
          switch(
    i)
          {
          case 
    1CreateList(); break;
          case 
    2DisplayList(); break;
               default: 
    i=0;
          }
       } while(
    i);
       
    getch();

    Cứ mỗi lần bấm chọn mục 2 thì lại quay lại bảng Menu.
    Đã dò lại code nhưng đúng là lại ... ko thông cho lắm
    Thanks!
    Đã được chỉnh sửa lần cuối bởi tom3cang : 02-04-2009 lúc 09:05 AM.

  4. #4
    Ngày gia nhập
    10 2008
    Bài viết
    8

    Không ai giúp thì tự mình giúp mình vậy!
    Về mò hoài mới ngộ ra mình đã khai báo biến toàn cục lại tiếp tục khai List &L trong hàm nữa
    Sửa lại thì chạy đúng... nhưng mà tại sao lại thế nhỉ ?

  5. #5
    Ngày gia nhập
    10 2008
    Bài viết
    8

    Đoạn code trên với cách tạo danh sách là phần tử được tạo sau cùng thì sẽ đứng đầu danh sách.
    Bây chừ thầy bảo là viết lại cách tạo danh sách mà phần tử được tạo sau cùng sẽ đứng cuối danh sách.
    Mình suy nghĩ hoài về thuật toán nhưng "tài năng có hạn"
    Thế này,hàm Display in ra sẽ lấy phần tử vừa xét xong tức là nhập P1,P2,...,Pn thì hàm Display sẽ in ra Pn,Pn-1,....,P2,P1
    Còn nếu chèn vào cuối danh sách thì Pn->NULL nên chỉ in được Pn
    Mình tham khảo các sách thì hình như hầu hết là dùng quản lý đầu cuối
    Có bác nào có cách nào khác ko?

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