Professional Documents
Culture Documents
CTDL 05 ListKep
CTDL 05 ListKep
1
NỘIMaster
A B C D
2
CấuClick
Trúc To Edit
Dữ Liệu Master Title Style
• Cấu trúc dữ liệu 1 nút
typedef struct tagDnode
{ Data Info;
struct tagDnode *pPre;
struct tagDnode *pNext;
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
}DNode;
• Cấu trúc List kép
Typedef struct tagDList
{ DNode *pHead;
DNode *pTail;
}DList;
3
CácClick
Thao To
TácEdit
TrênMaster
List Kép Title Style
• Khởi tạo danh sách liên kết kép rỗng
• Tạo 1 nút có thành phần dữ liệu = x
• Chèn 1 phần tử vào danh sách
– Chèn vào đầu
– Chèn sau phần tử Q
– Chèn vào trước phần tử Q
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
l.DTail=NULL;
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
5
TạoClick
1 NútTo
Có Edit
ThànhMaster Title
Phần Dữ LiệuStyle
=X
DNode *CreateDNode(int x)
{ DNode *tam;
tam=new DNode;
if(tam==NULL)
{ printf("khong con du bo nho");
exit(1);
}
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
else
{ tam->Info=x;
tam->pNext=NULL;
tam->pPre=NULL;
return tam;
}
}
6
Click
Thêm ToVào
1 Nút Edit Master
Đầu Title
Danh Sách Style
• Minh họa hình vẽ
pHead
A B C D
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
X pTail
7
CàiClick To Edit
Đặt Thêm 1 NútMaster
Vào ĐầuTitle
DanhStyle
Sách
void AddFirst(DList &l, DNode *tam)
{
if(l.pHead==NULL)//xau rong
{
l.pHead=tam;
l.pTail=l.pHead;
Cấu trúc dữ liệu 1 vá thuật giải
}
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
else
{
tam->pNext=l.pHead;
l.pHead->pPre=tam;
l.pHead=tam;
}
}
8
Click
Thêm VàoTo Edit
Cuối Master
Danh Sách Title Style
• Minh họa thêm 1 phần tử vào sau danh sách
pTail
pHead
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
A B C D
9
CàiClick To Edit
Đặt Thêm 1 NútMaster Title
Vào Cuối Style
Danh Sách
void AddEnd(DList &l,DNode *tam)
{
if(l.pHead==NULL)
{
l.pHead=tam;
l.pTail=l.pHead;
Cấu trúc dữ liệu 1 vá thuật giải
}
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
else
{
tam->pPre=l.pTail;
l.pTail->pNext=tam;
tam=l.pTail;
}
}
10
Click
Thêm VàoTo Edit
Sau Nút Master
Q Title Style
• Minh họa thêm nút X vào sau nút q
pHead q pTail
Cấu trúc dữ liệu 1 vá thuật giải
A B C D
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
11
CàiClick To Edit
Đặt Thêm 1 NútMaster
Vào SauTitle
Nút QStyle
void AddLastQ(DList &l,DNode *tam, DNode *q)
{
DNode *p;
p=q->pNext;
if(q!=NULL)//them vao duoc
{
tam->pNext=p;
tam->pPre=q;
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
q->pNext=tam;
if(p!=NULL)
p->pPre=tam;
if(q==l.pTail) //them vao sau danh sach lien ket.
l.pTail=tam;
}
else
AddFirst(l,tam);
}
12
Click
Thêm ToVào
1 Nút Edit Master
Trước Title
Nút Q Style
• Minh hoạ thêm 1 nút vào trước nút q
pHead q pTail
Cấu trúc dữ liệu 1 vá thuật giải
A B C D
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
13
CàiClick To Edit
Đặt Thêm 1 NútMaster Title
Vào Trước NútStyle
Q
void AddBeforeQ(DList &l,DNode *tam,DNode *q)
{ DNode *p;
p=q->pPre;
if(q!=NULL)
{
tam->pNext=q;
q->pPre=tam;
Cấu trúc dữ liệu 1 vá thuật giải
tam->pPre=p;
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
if(p!=NULL)
p->pNext=tam;
if(q==l.pHead)
l.pHead = tam;
}
else
AddEnd(l,tam);
}
14
XoáClick
PhầnTo
Tử Edit Master
Đầu Danh Title
Sách Style
void DeleteFirst(DList &l)
{
DNode *p;
if(l.pHead!=NULL)
{
p=l.pHead;
Cấu trúc dữ liệu 1 vá thuật giải
l.pHead=l.pHead->pNext;
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
l.pHead->pPre=NULL;
delete p;
if(l.pHead==NULL)
l.pTail=NULL;
}
}
15
XoáClick ToTử
1 Phần Edit Master
Cuối Title
Danh Sách Style
void DeleteEnd(DList &l )
{
DNode *p;
if(l.pHead!=NULL) //tuc xau co hon mot phan tu
{
p=l.pTail;
Cấu trúc dữ liệu 1 vá thuật giải
l.pTail=l.pTail->Pre;
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
l.pTail->pNext=NULL;
delete p;
if(l.pTail==NULL)
l.pHead=NULL;
}
}
16
HủyClick
1 NútTo
SauEdit
Nút Master
Q Title Style
void DeleteLastQ(DList &l,DNode *q)
{
DNode *p;//luu node dung sau node q
if(q!=NULL)
{
p=q->pNext;
if(p!=NULL)
{
q->pNext=p->pNext;
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
break;
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
while(q!=NULL)
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1
{
if(p->Info>q->Info)
HV(p,q);
q=q->pNext;
}
p=p->pNext;
}}
20