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

Đề tài: hỏi một chút về danh sách liên kết kép

Threaded View

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

    Mặc định hỏi một chút về danh sách liên kết kép

    Đề bài : nhập 1 danh sách sinh viên = DSLK kép . Sau đó nhập điểm chuẩn và liên kết + in ra các sinh viên đậu .
    Mình làm như sau :
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #include<alloc.h>
    5. typedef struct sinhvien{
    6.             int d;
    7.             sinhvien *ptiep;
    8.             sinhvien *plui;
    9.                };
    10.  
    11. typedef struct list{
    12.               sinhvien *pdau;
    13.               sinhvien *pcuoi;
    14.              };
    15.  
    16. void khoidau(list &l);
    17. void khoidau(list &l)
    18. {
    19.  l.pdau=l.pcuoi=NULL;
    20. }
    21.  
    22. sinhvien *tao(int n);
    23. sinhvien *tao(int n)
    24. {
    25.  sinhvien *p;
    26.  p=(sinhvien*)malloc(sizeof(sinhvien));
    27.  if(!p) return NULL;
    28.  p->d=n;
    29.  p->ptiep=p->plui=NULL;
    30.  return p;
    31. }
    32.  
    33. void chencuoi(list &l,sinhvien *p);
    34. void chencuoi(list &l,sinhvien *p)
    35. {
    36.  if(l.pdau==NULL) l.pdau=l.pcuoi=p;
    37.  else {
    38.        p->plui=l.pcuoi;
    39.        l.pcuoi->ptiep=p;
    40.        l.pcuoi=p;
    41.       }
    42. }
    43.  
    44. void in(list l);
    45. void in(list l)
    46. {
    47.  sinhvien *p;
    48.  p=l.pdau;
    49.  while(p)
    50.  {
    51.   printf("%d\n",p->d);
    52.   p=p->ptiep;
    53.  }
    54. }
    55. /*day la ham xet dau hay rot*/
    56. void dc(list l,int h);
    57. void dc(list l,int h)
    58. {
    59.  sinhvien *p;
    60.  
    61.  p=l.pdau;
    62.  
    63.  while(p)
    64.  {
    65.   if(((p->plui)==NULL)&&(p->d)<h) l.pdau=p->ptiep;
    66.   else if((p->d)<h) {
    67.              (p->plui)->ptiep=p->ptiep;
    68.              (p->ptiep)->plui=p->plui;
    69.             }
    70.   if(((p->ptiep)==NULL)&&(p->d)<h) l.pcuoi=p->plui;
    71.   p=p->ptiep;
    72.  
    73.  }
    74. }
    75.  
    76. void main()
    77. {
    78.  
    79.  clrscr();
    80.  
    81.  sinhvien *sv,*p;
    82.  list l;
    83.  int n,i,m,h;
    84.  
    85.  khoidau(l);
    86.  printf("nhap so sinh vien:");
    87.  scanf("%d",&n);
    88.  
    89.  for(i=1;i<=n;i++)
    90.  {
    91.   printf("\nnhap diem sinh vien %d:",i);
    92.   scanf("%d",&m);
    93.   sv=tao(m);
    94.   fflush(stdin);
    95.   chencuoi(l,sv);
    96.  }
    97.  
    98.  printf("nhap diem chuan:");
    99.  scanf("%d",&h);
    100.  
    101.  dc(l,h);
    102.  in(l);
    103.  
    104.  getch();
    105. }

    Mình không biết trong cái hàm xét đậu hay rớt của mình :
    1) phải làm sao để mà free bộ nhớ sau khi liên kết lại đây bởi vì như trên thì chỉ có "nối dây" lại cho đúng chứ không xoá được những phần tử bị loại ?
    2) sao lúc mình nhập điểm của thí sinh đầu tiên mà bé hơn điểm chuẩn thì khi thực hiện hàm dc() xong , in ra nó vẫn tồn tại ?
    Cám ơn nhiều nhé .
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 26-09-2008 lúc 08:31 AM.

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