30/09/2018, 21:09
Nhờ người trợ giúp về DSLK :)
có vài vấn đề em muốn hỏi mọi người mong được giúp đỡ.
thứ nhất là: em đang làm hàm xóa 1 phần từ cuối danh sách(Chỉ làm dựa theo hướng dẫn tương tự của thầy) nên không biết là có đúng không ?
int removeHead(LIST &l) // Tương tự xóa đầu :v
{
NODE *p;
int x;
// Kiem tra danh sach l co rong khong truoc khi xoa?
if(l.pTail != NULL)
{
p = l.pTail;
x = p->data;
l.pTail = l.pTail->pNext;// Cập nhật lại pTail mới
delete p;// kiểm tra sau khi xóa có rỗng ko ?
if(l.pHead == NULL)
l.pTail = NULL;
}
return x;
}
// Thứ 2 là: em mới học về danh sách liên kết nên còn mơ hồ(đã đọc định nghĩa) nhưng chưa biết vận dụng ntn
Bài liên quan
hàm cập nhập l.ptail có vấn đề chạy chương trình sẽ không ra đúng kết quả.
điều kiện kiểm tra đầu có rỗng không nên để ngoài if(ptail!= null) vì để trong hàm sẽ bị sai.
danh sách rỗng khi tail và head đều rỗng.
void deltail(){ // xoa node cuoi
if(a.head==NULL) return;
vậy có nghĩa là kiểm trả xem nếu pHead = null hoặc phead= ptail(chỉ có 1 node) thì return.
nếu không thì cho nó chạy từ đầu tới cuối rồi gán 1 biến tạm bằng node cuối(Tail). còn cái đoạn sau ý nghĩa nó ntn có thể giải thích cho em hiểu thêm được không
Danh sách liên kết giống như 1 sợi xích thôi, mỗi phần tử là 1 mắt xích, cứ tưởng tượng như thế thì yêu cầu nào cũng giải quyết dễ dàng mà không lo bị rối