You are on page 1of 7

CẤU TRÚC DỮ LIỆU CỦA MỘT NÚT TRONG LIST ĐƠN

Typedef struct Node


{
Data info;
Struct Node *Next;
};
Typedef struct Node NODE;
CẤU TRÚC DỮ LIỆU CỦA DANH SÁCH LIÊN KẾT ĐƠN
Typedef struct List
{
NODE *Head;
NODE *Tail;
}
Typedef struct LIST;
KHỞI TẠO DANH SÁCH LIÊN KẾT
Void CreateList (LIST &L)
{
L.Head = NULL;
L.Tail = NULL;
}
TẠO MỘT PHẦN TỬ MỚI
NODE *CreateNode(Data x)
{
NODE *P;
P = new Node;
If (P == NULL)
Return NULL;
P->Info = x;
P->Next = NULL;
Return P;
}
THÊM PHẦN TỬ VÀO ĐẦU DANH SÁCH LIÊN KẾT ĐƠN
Voide AddHead (List &L, NODE *P)
{
If (L.Head == NULL)
{
L.Head = P;
L.Tail = L.Head;
P->Next = NULL;
}
Else
{
P ->Next= L.Head;
L.Head = P;
}
}
THUẬT TOÁN THÊM VÀO CUỐI DANH SÁCH LIÊN KẾT
Void AddTail(LIST &L, NODE *P)
{
If (L.Head== NULL)
{
L.Head = P;
L.Tail = L.Head;
}
Else
{
L.Tail->Next = P;
L.Tail = P;
}
}
THÊM PHẦN TỬ P VÀO SAU Q TRONG DANH SÁCH LIÊN KẾT
Void AddAfterQ (List &L, NODE *P, NODE *Q)
{
If (Q == NULL)
AddHead(L,Q);
Else
{
P->Next = Q->Next;
Q->Next = P;
If (L.Tail == Q) L.Tail = Q;
}
}
HỦY PHẦN TỬ ĐỨNG ĐẦU TRONG DANH SÁCH LIÊN KẾT ĐƠN
Void RemoveHead(LIST &L, int &X)
{
NODE *P;
If ( L.Head != NULL)
{
P = L.Head;
X = P->info;
L.Head = L.Head->Next;
Delete P;
If (L.Head == NULL);
L.Tail == NULL;
Return 1;
}
Return 0;
}
HỦY PHẦN TỬ SAU PHẦN TỬ Q TRONG LIST
Void RemoveAfterQ(List &L, Node *Q, int &x)
{
Node *P;
If (Q != NULL)
{
P = Q->Next;
If (P != NULL)
{
If (P== L.Tail)
L.Tail = Q;
Q->Next = P->Next;
X = P->Info;
Delete P;
}
Return 1;
}
Else return 0;
}
HỦY PHẦN TỬ CÓ KHÓA X
Void RemoveX(List &L, int x)
{
Node *P,Q = NULL;
P = L.Head;
While (P!=NULL) && (P->info !=x)
{
P = Q;
P = P->Next;
}
If (P == NULL )
Return 0;
If (P != NULL)
RemoveAfterQ(L,Q,x);
else
RemoveHead(L,x);
Return 1;
}
HÀM TÌM MỘT PHẦN TỬ TRONG DANH SÁCH LIÊN KẾT ĐƠN
Node *Search(List &L, int x)
{
Node *P;
P = L.Head;
While ( P != NULL ) && ( P->info != x)
P = P->Next;
Return P;
}
HÀM NHẬP PHẦN TỬ TRONG DANH SÁCH LIÊN KẾT ĐƠN
Void Input(List &L)
{
Node *P;
P = L.Head;
While (P != NULL)
{
Cin >> P->info ;
P = P->Next;
}
}

HỦY DANH SÁCH LIÊN KẾT ĐƠN


Void RemoveList(List &L)
{
Node *P;
While (L.Head != Null)
{
P = L.Head;
L.Head = P->Next;
Delete P;
}
}

You might also like