Bài này làm trên mảng thì quá dễ, trên forum cũng đề cập rồi
[LINK]http://forums.congdongcviet.com/showthread.php?t=8616[/LINK]
Nhưng làm trên Linked List Đơn thì khoai ghê!
Đây là đoạn code xóa node trùng trong một DSLK đã sắp tăng, mình bị vướng ở một chỗ, các bạn xem giúp mình
C Code:
void unduplicateList (List *l) { Node* p, *q; p = l->pHead; while (p!=NULL) { q = p->pNext; if(p->key == q->key) { p->pNext = q->pNext; delete q; // Làm sao để lưu lại vị trí của p, list đơn ko pPre } p = q; p = p->pNext; } }
Bài này làm trong mảng thì quá dễ vì các phần tử trong mảng có chỉ số để lưu
còn Linked List thì không có, mình mong các bạn giúp mình vì mình sắp làm bài tập lớn liên quan tới phần này! Vì mình không biết để trong tag Code nên hơi khó coi, các bạn thông cảm! Giúp mình nhé!
Đã được chỉnh sửa lần cuối bởi Xcross87 : 08-06-2008 lúc 06:33 PM.
Bài này làm trên mảng thì quá dễ, trên forum cũng đề cập rồi
[LINK]http://forums.congdongcviet.com/showthread.php?t=8616[/LINK]
Nhưng làm trên Linked List Đơn thì khoai ghê!
- Bạn thử cái này xem:
C++ Code:
void unduplicateList(List *l) { Node* p = l->pHead,*q = 0; while (p) { if(p->pNext) { if(p->key == p->pNext->key) { q = p->pNext; p->pNext = q->pNext; delete q; } else { p = p->pNext; } } else break; } }