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

Đề tài: Code quản lý, tìm kiếm danh sách sử dụng danh sách liên kết đơn

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

    Question Code quản lý, tìm kiếm danh sách sử dụng danh sách liên kết đơn

    Không biết mình làm sai chỗ nào mà sau khi nhập danh sách (READ_LIST) xong thì ko thể in ra được.

    Đề bài:
    Vận dụng các phép toán trên danh sách liên kết để viết chương trình nhập vào một danh sách các số
    nguyên. Sau đó thực hiện các công việc sau:
    + Hiển thị danh sách vừa nhập ra màn hình.
    + Thêm 1 phần tử có nội dung x vào danh sách tại ví trí n (trong đó x và n được nhập từ bàn phím).
    + Xóa phần tử đầu tiên có nội dung x (nhập từ bàn phím) ra khỏi danh sách.
    + Sắp xếp danh sách theo thứ tự tăng dần.

    Bài giải
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<malloc.h>
    4. typedef int ElementType;
    5. typedef struct Node
    6. {
    7.         ElementType Element;
    8.        struct Node *Next;
    9. };
    10. typedef struct Node* Position;
    11. typedef Position List;
    12. void MAKENULL_LIST(List &Header)
    13. {
    14.      Header=(Node*)malloc(sizeof(Node));
    15.      Header->Next=NULL;
    16. }
    17. int EMPTY_LIST(List L)
    18. {
    19.     return (L->Next==NULL);
    20. }
    21. void INSERT_LIST(ElementType X, Position P, List &L)
    22. {
    23.      Position T;
    24.      T=(Node*)malloc(sizeof(Node));
    25.      T->Element=X;
    26.      T->Next=P->Next;
    27.      P->Next=T;
    28. }
    29. void DELETE_LIST(Position P, List &L)
    30. {
    31.      Position T;
    32.      if(P->Next!=NULL)
    33.      {
    34.                       T=P->Next;
    35.                       P->Next=T->Next;
    36.                       free(T);
    37.      }
    38. }
    39. Position Locate(ElementType X, List L)
    40. {
    41.      Position P;
    42.      int Found=0;
    43.      P=L;
    44.      while((P->Next!=NULL) && (Found==0) )
    45.      if(P->Next->Element==X) Found=1;
    46.      else P=P->Next;
    47.      return P;
    48. }
    49. ElementType Retrieve(Position P, List L)
    50. {
    51.             if(P->Next!=NULL) return P->Next->Element;
    52. }
    53. Position First(List L)
    54. {
    55.          return L;
    56. }
    57. Position Endlist(List L)
    58. {
    59.          Position P;
    60.          P=First(L);
    61.          while(P->Next!=NULL)
    62.          P=P->Next;
    63.          return P;
    64. }
    65. Position POSITION_N(int n, List L)
    66. {
    67.          int i=1;
    68.          Position T=L;
    69.          while(T->Next!=NULL&&i<n)
    70.          {
    71.          T=T->Next;
    72.          i++;
    73.          }
    74.          return T;
    75. }
    76. void Sort(List L)
    77. {
    78.      Position P,Q;
    79.      P=L->Next;
    80.      int temp;
    81.      while(P!=NULL)
    82.      {
    83.                    Q=P->Next;
    84.                    while(Q!=NULL)
    85.                    {
    86.                    if(P->Element>Q->Element)
    87.                    {
    88.                     temp=P->Element;
    89.                     P->Element=Q->Element;
    90.                     Q->Element=temp;
    91.                    }
    92.                    Q=Q->Next;
    93.                    }
    94.                    P=P->Next;
    95.      }
    96. }
    97. void READ_LIST(List L)
    98. {
    99.      ElementType X;
    100.      printf("Nhap cac phan tu (ket thuc bang -1):\n");
    101.      MAKENULL_LIST(L);
    102.      do
    103.      {
    104.                   printf("X= "); scanf("%d",&X);
    105.                   INSERT_LIST(X,Endlist(L),L);
    106.      }
    107.      while (X!=-1);
    108. }
    109. void PRINT_LIST(List L)
    110. {
    111.      Position P;
    112.      P=L->Next;
    113.      while(P!=NULL)
    114.      {
    115.                    printf("%d   ",P->Element);
    116.                    P=P->Next;
    117.      }
    118. }
    119. main()
    120. {
    121. ElementType x;
    122. int n;
    123. List L;
    124. Position P;
    125. READ_LIST(L);
    126. PRINT_LIST(L);
    127. printf("\nNhap vao 1 phan tu de them vao ds, x=");
    128. scanf("%d",&x);
    129. printf("Vi tri can them, n=");scanf("%d",&n);
    130. P=POSITION_N(n,L);
    131. INSERT_LIST(x,P,L);
    132. printf("\nDanh sach sau khi them %d la:\n",x);
    133. PRINT_LIST(L);
    134. printf("\nNhap vao 1 phan tu de xoa, x=");scanf("%d",&x);
    135. P=Locate(x,L);
    136. if(P->Next!=NULL) DELETE_LIST(P,L);
    137. printf("\nDanh sach sau khi xoa %d la:\n",x);
    138. PRINT_LIST(L);
    139. Sort(L);
    140. printf("\nDanh sach sau khi duoc sap xep:\n",x);
    141. PRINT_LIST(L);
    142. getch();
    143. }

  2. #2
    Ngày gia nhập
    08 2010
    Nơi ở
    Vô gia cư
    Bài viết
    147

    Hàm ReadList bạn ạ. Truyền vào biến L phải là 1 tham chiếu, không dùng tham trị như vậy.

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

    Trích dẫn Nguyên bản được gửi bởi nothing1010 Xem bài viết
    Hàm ReadList bạn ạ. Truyền vào biến L phải là 1 tham chiếu, không dùng tham trị như vậy.
    Oh, thanks. Sai sót hok đáng có nhỉ

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

  1. Sửa lỗi undefined 't' trong code bài quản lý sinh viên bằng danh sách liên kết
    Gửi bởi bka_trung 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-03-2013, 12:14 AM
  2. Chèn nút trong danh sách liên kiết đơn!!
    Gửi bởi no.1_ctk34 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 11-10-2011, 10:22 PM
  3. Tìm kiếm trong danh sách liên kết như thế nào?
    Gửi bởi sx5181 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 08-10-2010, 08:10 PM
  4. Phần mềm quản lý thư viện có Danh sách liên kết và cây nhị phân tìm kiếm
    Gửi bởi quoccd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 11-03-2010, 07:59 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