em đang làm về phần xóa list, em đã làm được các phần nhưng còn phần xóa cuối em không biết viết hàm như thế nào mong anh chị chỉ giùm em thank.
em đang làm về phần xóa list, em đã làm được các phần nhưng còn phần xóa cuối em không biết viết hàm như thế nào mong anh chị chỉ giùm em thank.
typedef struct NODE
{
int infor;
struct NODE *pNext;
}Node;
typedef struct LIST
{
Node *pHead;
Node *pTail;
}List;
void init(List &t)
{
t.pHead = NULL;
t.pTail = NULL;
}
//ham xu ly xoa phan tu cuoi trong danh sach lien ket don
bool xoa_cuoi(List &l)
{
if(l.pTail == NULL) // danh sach rong
return false;
Node *temp = new Node;
Node *flag = new Node;
temp = l.pHead;
while(temp->pNext != NULL)
{
flag = temp;
temp = temp ->pNext;
}
delete[] temp;
pTail = flag;
}
void DeleteTail(List *l)
{
Node *p, *q;
p = l->Head;
while(p != l->Tail)
{
q = p;
p = p->Next;
}
if(p == l->Head)
DeleteHead(l);
else
{
l->Tail = q;
q->Next = NULL;
delete p;
}
}
Bạn chỉ cần làm theo ý tưởng : lần tới cuối ,dùng một biến nữa lưu trữ node kế cuối rồi gán node kế cuối -> tiếp = NULL , sau đó bạn del node cuối đi la xong.
Chúc bạn thành công
Bookmarks