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

Đề tài: bạn nào chỉ mình cách xóa 1 phần tử với

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

    Mặc định bạn nào chỉ mình cách xóa 1 phần tử với

    mình có 1 câu như này bạn nào chỉ giúp mình cách giải được không. Không cần code cũng được:
    - ban đầu nhập vào 1 cấu trúc gồm tên sơn, tên sản xuất, số lượng , trọng lượng , năm hết hạn sử dụng.
    -nhập vào một số nguyên X, xóa tất cả các loại sơn có năm sử dụng nhỏ hơn X. đưa danh sách các loại sơn còn lại ra màn hình .

    cái thwus nhát thì chắc ai cũng làm được. Nhưng mình hỏi cái thứ 2 ấy. Làm sao để xóa hết tất cả loại sơn đã hết hạn đi.

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

    Bài này đơn giản nhất là dùng linked List. Này nhá, bạn khai báo 1 class có cấu trúc dữ liệu như sau:
    Code:
    Class Data{
    char *name;
    char *....
    ....
    Data *next;
    }
    [
    Với *next là con trỏ trỏ tới phần tử thứ hai. Như vậy bạn đã có 1 cấu trúc dữ liệu các phần tử liên kết với nhau. Như vậy chỉ cần cho 1 con trỏ duyệt toàn bộ list, là ta có thể xóa phần tử:

    Code:
    void Delete(Data *list,int key)
    {
    Data *pLoc=list, *pPre=NULL, *pDel=NULL;
    while (pLoc!=NULL)
    {
       if (pLoc->year<key) 
        {
            pDel=pLoc;
            pLoc=pLoc->pNext;
            delete pDel;
            pPre->next=pLoc->next
         }
         else{
         pPre=pLoc;
         pLoc=pLoc->next;
    }
    }
    Viết ngẫu hứng, có gì thiếu xót bỏ qua cho
    Đã được chỉnh sửa lần cuối bởi long.bkiter07 : 13-11-2008 lúc 08:36 PM.

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

    hi hi mình làm xóa 1 phần tử được rồi. Giờ bạn nào xem hộ mình cái code này cái mình áp dụng từ xóa 1 phần tử nên xóa 1 cấu trúc nhưng nó in ra toàn sai thôi. Điều kiện là các biến cấu trúc có số năm nhỏ hơn x sẽ bị xóa :

    C Code:
    1. void xoa()
    2.  
    3. {
    4.    dem=0;
    5.     printf("\nNhap Nam x:");
    6.    scanf("%d",&x);
    7.    for(i=0;i<n;i++)
    8.    {
    9.     if(son[i].nam<x)
    10.       {
    11.         dem++;
    12.          for(j=i;j<n;j++)
    13.             son[j]=son[j+1];
    14.         }
    15.    }
    16.    printf("\%d",dem);
    17.    printf("\n--------------------------------------------------------");
    18.    printf("\n| Ten Son |Ten san xuat|so luong|trong luong|thanh tien|");
    19.     printf("\n--------------------------------------------------------");
    20.    for(i=0;i<n-dem;i++)
    21.    {
    22.       son[i].tien=son[i].dongia*son[i].sl;
    23.     printf("\n|%-9s|%-12s|%8d|%11.2f|%10.2f|",son[i].tens,son[i].tensx,son[i].sl,son[i].tl,son[i].tien);
    24.    }
    25.     printf("\n--------------------------------------------------------");
    26. }

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

    bạn nào xem hộ mình cái code cái ko bít sao ở đâu nữa

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

  1. xóa các phần tử giống nhau trong mảng chỉ để lại 1 phần tử
    Gửi bởi trungbd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 30
    Bài viết cuối: 12-08-2013, 04:01 PM
  2. Trả lời: 5
    Bài viết cuối: 13-12-2012, 02:54 PM
  3. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  4. Kỹ thuật C++0x Xóa không được 1 phần tử bất kì và xóa tại vị trí bất kì trong DSLK
    Gửi bởi datinh_o0o7 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 19-03-2011, 10:24 PM
  5. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-03-2010, 01:57 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