Danh sách liên kết - Xóa phần tử đầu tiên của danh sách
*===Coding by onlinexanh@yahoo.com===*/
#include<iostream.h>
#include<conio.h>
struct node //Định nghĩa node
{
float info;
node *next;
};
struct list //Định nghĩa danh sách
{
node *first;
node *last;
};
void KhoiTao(list &d) //Khởi tạo danh sách
{
d.first = d.last = NULL;
}
void Xem(list d) //Xem danh sách
{
if(d.first==NULL) {cout<<"\nDanh sach rong"; return;}
node *p = d.first;
while(p!=NULL)
{
cout<<"\n"< info;
p = p->next;
}
}
void ThemDau(list &d, float x) //Thêm phần tử vào đầu danh sách
{
node *p = new node; //Khai báo con trỏ kiểu node
p->info = x;
p->next = NULL;
if(d.first==NULL)
{
d.first = d.last = p;
}
else
{
p->next = d.first; //p trỏ tới node đầu của danh sách
d.first = p; //p trở thành node đầu của danh sách
}
}
void ThemCuoi(list &d, float x) //Thêm phần tử vào cuối danh sách
{
node *p = new node; //Khai bảo con trỏ kiểu node
p->info = x;
p->next = NULL;
if(d.first==NULL) //Nếu danh sách rỗng
{
d.first = d.last = p;
}
else
{
d.last->next = p; //Node cuối của danh sách trỏ tới p
d.last = p; //p trở thành node cuối mới của danh sách
}
}
void XoaDau(list &d) //Xóa phần tử đầu tiên của danh sách
{
if(d.first==NULL) return; //Nếu danh sách rỗng thì thoát khỏi hàm
node *p = d.first; //Khai báo con trỏ p là nút đầu tiên của danh sách
if(d.first == d.last) d.first = d.last = NULL; //Nếu danh sách chỉ có 1 nút
else d.first = d.first->next; //Nếu không thì nút thứ hai trở thành nút đầu mới
delete p; //Xóa nút đầu ban đầu
}
void main()
{
clrscr();
struct list d;
KhoiTao(d);
ThemDau(d,1);
ThemCuoi(d,3);
ThemCuoi(d,5);
ThemDau(d,2);
XoaDau(d);
Xem(d);
getch();
}
có thể viết chương trình con tìm 1 phần tử và xóa 1 phần tử bất kì trong dslk đơn không?
Trả lờiXóa