Professional Documents
Culture Documents
Nếu như khi thêm chúng ta phải cấp phát bộ nhớ cho nút cần thêm thì với xóa
một nút chúng ta cần giải phóng bộ nhớ cho nút bị xóa bằng lệnh free().
- Kiểm tra: Nếu danh sách chỉ có một phần tử, khi xóa phần tử đi thì phần tử
cuối cùng không c n
NULL)
p = Q.Head;
free(p);
Q.Tail = NULL;
&Q , Node *q )
{ Node *p; if (q !=
NULL)
p = q -> Next;
if (p != NULL)
if (p == Q.Tail)
q->Next = NULL;
Q.Tail = q;
}
q -> Next = p -> Next;
free(p);
} else RemoveHead(Q);
}
*Xóa phần tử có khóa bằng k
Thuật toán:
Bước 1: Tìm phần tử p có khóa k và phần tử q đứng trước nó
Bước 2:
Nếu tìm thấy phần tử có khóa là k thì hủy p ra khỏi xâu tương tự hủy phần
tử sau q;
p = p->Next;
} if (p == NULL) return 0; //Không tìm thấy k
if (q != NULL)
{ if(p == Q.Tail) Q.Tail = q; q-
>Next = p->Next; free( p);
}
else //p là phần tử đầu xâu
{
Q.Head = p -> Next; if ( Q.Head == NULL)
Q.Tail = NULL;
} return
1; }