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

Đề tài: Tìm kiếm vị trí trong danh sách liên kết. Giúp em với!

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

    Mặc định Tìm kiếm vị trí trong danh sách liên kết. Giúp em với!

    - Em có 1 class là: Xa có dữ liệu là maxa và đầy đủ phương thức khởi tạo...
    - Sau đó em tạo 1 class là DanhSachXa bằng linked list như sau:
    Code:
    class DanhSachXa
    { 
    private: 
    struct DanhSachXaNode
    {
    Xa itemxa;
    DanhSachXaNode *next;
    }; 
    DanhSachXaNode *head;
    int soluongxa;
    public:
    DanhSachXa();
    void themXa(int index, string max, string tenx, int dsx);
    void xoaXa(string max);
    .....
    };
    Trong hàm xoaXa() em code như sau:


    Code:
    void DanhSachXa::xoaXa(string max)
    { 
    DanhSachXaNode *cur;
    --soluongxa;
    if(max == head->itemxa.maxa)
    {
    cur = head;
    head = head->next;
    //xoa xa dau tien trong danh sach
    }
    else
    {
    DanhSachXaNode *i;    
    for(i = head; i != NULL; i = i->next)
    {
    if(max == i->itemxa.maxa)
    {				
    cur = i->next;
    i->next = cur->next;				
    }			// đoạn này code thế này thì ví dụ em xóa phần tử thứ 3 thì nó lại xóa phần tử thứ 4....
    }
    }
    cur->next = NULL;
    delete cur;
    cur = NULL;
    }
    Ý tưởng là: So sánh maxa của itemXa (đã nằm trong danh sách) = với max (đầu vào). Nếu = nhau thì xóa cái itemXa đó đi.
    Như trên thì em đã xóa được 1 node đầu tiên, tức là xóa được Xã ở vị trí đầu tiên (vị trí số 1).
    Còn đến đoạn sau thì em bị tình trạng là xóa phần tử thứ 2, thì nó lại xóa phần tử thứ 3, muốn xóa 3 thì nó lại xóa 4...

    Trong main như sau:

    Code:
    DanhSachXa dsxa;
    	dsxa.themXa(1, "x1", "xa so 1", 5);
    	dsxa.themXa(2, "x2", "xa so 2", 25);
    	dsxa.themXa(3, "x3", "xa so 3", 50);
    	dsxa.themXa(4, "x4", "xa so 4", 550);
    	dsxa.xoaXa("x3"); // lúc in ra thì nó lại xóa phần tử thứ 4 :((Mong được giúp đỡ để sao cho xóa đúng vị trí cần xóa!

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn làm thế là sai nguyên tắc rồi, muốn xóa phần tử tại vị trí vửa tìm được bạn phải nối next của thằng trước nó với thằng sau nó.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

  1. 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
  2. tìm kiếm tên lớp trong danh sách liên kết đơn.
    Gửi bởi quyvuongtt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 22-04-2011, 12:34 AM
  3. Hàm tìm kiếm theo MSSV trong danh sách liên kết đơn?
    Gửi bởi judoka 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: 08-04-2011, 08:46 PM
  4. 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
  5. Code quản lý, tìm kiếm danh sách sử dụng danh sách liên kết đơn
    Gửi bởi anther trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-09-2010, 09:25 AM

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