23 thg 10, 2010

Danh sách liên kết - Xóa phần tử đầu tiên của danh sách

trạng: Vui vẻ

Danh sách liên kết - Xóa phần tử đầu tiên của danh sách

Đăng ngày: 12:46 22-01-2010
Thư mục: C++
*===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();
}

1 nhận xét:

  1. 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