- Code:
#include "iostream.h"
#include "alloc.h"
typedef struct NODE
{
unsigned x;
NODE *next;
};
typedef struct LIST
{
NODE *pHead;
NODE *pTail;
};
void CreateList(LIST &l)
{
l.pHead = l.pTail = NULL;
}
NODE *GetNode(unsigned x)
{
NODE *p = new NODE;
if(p == NULL) cout<<"Khong du bo nho!\n";
p->x = x;
p->next = NULL;
return p;
}
void InsertHead(LIST &l,NODE *x)
{
if(l.pHead == NULL)
l.pHead = l.pTail = x;
else
{
x->next = l.pHead;
l.pHead = x;
}
}
NODE *AddFirst(LIST &l,unsigned x)
{
NODE *p = GetNode(x);
if(p == NULL)
return NULL;
InsertHead(l,p);
return p;
}
void InPut(LIST &l)
{
int i,x,n;
cout<<"Co bao nhiu phan tu: "; cin>>n;
for(i = 0; i < n; i++)
{
do{
cout<<"x["<<i<<"] (x > 0) = ";
cin>>x;
if(x <= 0) cout<<"Ai cho phep ban nhap sai dieu kien!\n";
}while(x <= 0);
AddFirst(l,x);
}
}
void OutPut(LIST l)
{
NODE *p; int i;
for(p = l.pHead; p != NULL; p = p->next)
{
cout<<p->x<<" ";
}
}
void RemoveHead(LIST &l)
{
NODE *p;
p = l.pHead;
if(p == NULL) return;
l.pHead = l.pHead->next;
free(p);
cout<<"\nDanh sach sau khi xoa dau: ";
OutPut(l);
}
void RemoveTail(LIST &l)
{
NODE *p,*q;
p = l.pHead;
if(p == NULL) return;
if(p->next == NULL)
{
RemoveHead(l);
return;
}
while(p->next != NULL)
{
q = p;
p = p->next;
}
q->next = NULL;
free(p);
cout<<"\nDanh sach sau khi xoa cuoi: ";
OutPut(l);
}
void RemoveLocal(LIST &l,int viTri)
{
NODE *r, *p, *q;
int found = 0, count = 1;
p = l.pHead;
while(p != NULL && found == 0)
{
if(count == viTri)
{
q = p->next;
p->next = q->next;
q->next = NULL;
free(q);
found = 1;
}
count++;
p = p->next;
}
if(found == 0) cout<<"Khong tim thay node can xoa\n";
else
{
cout<<"Danh sach sau khi xoa node thu "<<viTri<<": ";
OutPut(l);
}
}
void XoaConTroCoGiaTriK(LIST &l,unsigned k)
{
NODE *p, *q;
int found = 0;
p = l.pHead;
if(p->x == k)
{
l.pHead = p->next;
free(p);
found = 1;
}
else
for(; p != NULL; p = p->next)
{
q = p->next;
if(q->x == k)
{
p->next = q->next;
q->next = NULL;
free(q);
found = 1;
break;
}
}
if(found == 0) cout<<"Khong tim thay node can xoa\n";
else
{
cout<<"Danh sach sau khi xoa: ";
OutPut(l);
}
}
main()
{
LIST l;
NODE *p;
int d;
CreateList(l);
do{
cout<<"\n+-----------------------------+";
cout<<"\n| MENU |";
cout<<"\n+-----------------------------+";
cout<<"\n| 1. Nhap vao danh sach |";
cout<<"\n| 2. Xuat danh sach |";
cout<<"\n| 3. Xoa node dau dsach |";
cout<<"\n| 4. Xoa node cuoi dsach |";
cout<<"\n| 5. Xoa node chi dinh |";
cout<<"\n| 6. Xoa node co gia tri k |";
cout<<"\n+-----------------------------+";
cout<<"\n| 0. Thoat khoi chuong trinh |";
cout<<"\n+-----------------------------+\n";
cin>>d;
switch(d)
{
case 1 : InPut(l); break;
case 2 : OutPut(l); break;
case 3 : RemoveHead(l); break;
case 4 : RemoveTail(l); break;
case 5 :
{
int viTri;
cout<<"Nhap vi tri can xoa: ";
cin>>viTri;
RemoveLocal(l,viTri - 1); break;
}
case 6 :
{
int k;
cout<<"Nhap gia tri con tro can xoa: ";
cin>>k;
XoaConTroCoGiaTriK(l,k); break;
}
}
}while(d != 0);
}
2 posters
3-2 Xóa danh sách liên kết
Vy Thanh Định- Web Master
- Giới tính : Bài gửi : 228
Tổng Điểm : 544
Điểm Thưởng : 16
Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
Tuổi : 34
- Post n°1
3-2 Xóa danh sách liên kết
ban_tuongky- Moderator
- Giới tính : Bài gửi : 91
Tổng Điểm : 198
Điểm Thưởng : 0
Bị Dụ Dỗ : 11/09/2009
- Post n°2
Re: 3-2 Xóa danh sách liên kết
thank you@!!!!!!!!!!!!!!!!!!!
|
|