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

Đề tài: Danh sách liên kết - Xử lý danh sách liên kết trong lập trình C

  1. #1
    Ngày gia nhập
    09 2009
    Bài viết
    40

    Mặc định Danh sách liên kết - Xử lý danh sách liên kết trong lập trình C

    Tình hình là em đang làm 1 cái ví dụ minh họa về thao tác trên danh sách liên kết như bên dưới
    khi biên dịch thì nó không báo lỗi gì cả nhưng lúc chạy thử 1 hàm thì nó không ra kết quả gì cả
    nó bị sai ở phần truyền tham số cho hàm.có ai biết cách nào sửa lại cho nó chạy ra kết quả đúng thì chỉ giúp em
    thanks
    C Code:
    1. #include <stdlib.h>
    2. #include <conio.h>
    3. #include <stdio.h>
    4. //dinh nghia 1 phan tu cua danh sach
    5. struct pointer
    6.         {
    7.                 int info;
    8.                pointer *link;
    9.             };
    10.  
    11. //them phan tu vao dau danh sach
    12. void inserthead (struct pointer *l,int x)
    13.        {
    14.                pointer *p;
    15.                p=(pointer*)calloc(1,sizeof(pointer));
    16.  
    17.                p->info=x;
    18.                p->link=l;
    19.                l=p;
    20.             }
    21.  
    22. //them phan tu vao cuoi danh sach
    23. void insertend (struct pointer *l,int x)
    24.     {
    25.                 struct pointer *p;
    26.                p=(pointer*)calloc(1,sizeof(pointer));
    27.  
    28.                p->info=x;
    29.                p->link=NULL;
    30.                if(l==NULL) l=p;
    31.                else
    32.                 {
    33.                     struct pointer *q;
    34.                     q=(pointer*)calloc(1,sizeof(pointer));
    35.  
    36.                     q=l;
    37.                      while(q->link!=NULL) q=q->link;
    38.                     q->link=p;
    39.                   }
    40.             }
    41. //xoa phan tu o dau danh sach
    42. void deletehead (struct pointer *l)
    43.     {
    44.                 struct pointer *p;
    45.                p=(pointer*)calloc(1,sizeof(pointer));
    46.  
    47.                 if(l==NULL) exit(1);
    48.                else
    49.                 {
    50.                     p=l;
    51.                      l=l->link;
    52.                      free(p);
    53.                   }
    54.             }
    55.  
    56. //xoa phan tu o cuoi danh sach
    57. void deletetail (struct pointer *l)
    58.     {
    59.                 struct pointer *q;
    60.                q=(pointer*)calloc(1,sizeof(pointer));
    61.                 struct pointer *p;
    62.                p=(pointer*)calloc(1,sizeof(pointer));
    63.  
    64.                 if(l==NULL) exit(1);
    65.                else
    66.                 {
    67.                     if(l->link==NULL)
    68.                         {
    69.                             p=l;
    70.                            l=NULL;
    71.                            free(p);
    72.                         }
    73.                       else
    74.                         {
    75.                            q=l;
    76.                             while(q->link->link!=NULL)  q=q->link;
    77.                                  p=q->link;
    78.                                  free(p);
    79.                         }
    80.                   }
    81.             }
    82.  
    83. main()
    84. {
    85.     struct pointer *l;
    86.    l=NULL;
    87.    //cho 1 den 10 vao danh sach
    88.    int i;
    89.    for(i=1;i<=10;i++) inserthead(l,i);
    90.  
    91.    //tao 1 bien con tro gan danh sach l vao
    92.    struct pointer *p;
    93.    p=(pointer*)calloc(1,sizeof(pointer));
    94.    p=l;
    95.  
    96.    //in cai danh sach l ra
    97.    while(p!=NULL){printf("%d ",p->info);p=p->link;}
    98.    getch();
    99. }

  2. #2
    Ngày gia nhập
    08 2010
    Bài viết
    70

    bạn kêu nó không báo lỗi gì liệu có chém không thế. "pointer" hay là "struct pointer" đây
    bạn viết các hàm thay đổi con trỏ đầu tiên của mảng thì bạn nên dùng **l bạn ạ.
    điều cuối cùng là mình thấy code của bạn nó bựa thế nào ý.hihi
    mình sửa hết cho bạn nhưng chỉ test cái phần chèn vào đầu danh sách giống bạn thôi,hihi, tại lười wa', nếu có lỗi gì bạn reply nhé
    C Code:
    1. #include <stdlib.h>
    2. #include <stdio.h>
    3. struct pointer
    4.         {
    5.                 int info;
    6.                struct pointer *link;
    7.             };
    8. void inserthead(struct pointer **l,int x)
    9.        {
    10.                struct pointer *p;
    11.                p=calloc(1,sizeof(struct pointer));
    12.                p->info=x;
    13.                p->link=*l;
    14.                *l=p;
    15.             }
    16. void insertend (struct pointer **l,int x)
    17.     {
    18.                 struct pointer *p;
    19.                p=calloc(1,sizeof(struct pointer));
    20.                p->info=x;
    21.                p->link=NULL;
    22.                if(*l==NULL) *l=p;
    23.                else
    24.                 {
    25.                     struct pointer *q;
    26.                     q=calloc(1,sizeof(struct pointer));
    27.                     q=*l;
    28.                      while(q->link!=NULL) q=q->link;
    29.                     q->link=p;
    30.                   }
    31.             }
    32. void deletehead (struct pointer **l)
    33.     {
    34.                 struct pointer *p;
    35.                p=calloc(1,sizeof(struct pointer));
    36.                 if(*l==NULL) exit(1);
    37.                else
    38.                 {
    39.                     p=*l;
    40.                      *l=p->link;
    41.                      free(p);
    42.                   }
    43.             }
    44. void deletetail (struct pointer **l)
    45.     {
    46.                 struct pointer *q;
    47.                q=calloc(1,sizeof(struct pointer));
    48.                 struct pointer *p;
    49.                p=calloc(1,sizeof(struct pointer));
    50.                 if(*l==NULL) exit(1);
    51.                else
    52.                 {
    53.                     if((*l)->link==NULL)
    54.                         {
    55.                            *l=NULL;
    56.                         }
    57.                       else
    58.                         {
    59.                            q=*l;
    60.                             while(q->link->link!=NULL) q=q->link;
    61.                                 q->link=NULL;
    62.                         }
    63.                   }
    64.             }
    65. main()
    66. {
    67.     struct pointer *l;
    68.    l=NULL;
    69.    int i;
    70.    for(i=1;i<=10;i++) inserthead(&l,i);
    71.    struct pointer *p;
    72.    p=calloc(1,sizeof(struct pointer));
    73.    p=l;
    74.    while(p!=NULL){printf("%d ",p->info);p=p->link;}
    75. }

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

  1. Lập trình C Các bác giải dùm em bài trộn 2 danh sách có thứ tự thành 1 danh sách có thứ tự trong DS liên kết đơn
    Gửi bởi letranhoangtai trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 05-09-2012, 02:03 AM
  2. Bài tập C++ Tách chẵn lẽ thành 2 danh sách trong danh sách liên kết đơn?
    Gửi bởi leo009394 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 01-01-2012, 04:52 PM
  3. đảo ngược vùng liên kết trong danh sách liên kết đơn
    Gửi bởi khongcochi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 07-07-2011, 10:18 PM
  4. 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
  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