Danh sách liên kết đôi(kép): Là danh sách mà mỗi phần tử trong danh sách có kết nối với 1 phần tử đứng trước và 1 phần tử đứng sau nó
KHAI BÁO CẤU TRÚC DANH SÁCH
struct DNode
{
DataType data;
DNode* pPre; // trỏ đến phần tử đứng trước
DNode* pNext; // trỏ đến phần tử đứng sau
};
struct DList
{
DNode* pHead; // trỏ đến phần tử đầu ds
DNode* pTail; // trỏ đến phần tử cuối ds
};
HÀM TẠO NÚT
Với DataType: Kiểu dữ liệu của phần tử (int,float,string,struct…..)
DNode* getNode ( DataType x)
{
DNode *p;
p = new DNode; // Cấp phát vùng nhớ cho phần tử
if (p==NULL) {
cout<<“Khong du bo nho”; return NULL;
}
p->data = x; // Gán thông tin cho phần tử p
p->pPrev = p->pNext = NULL;
return p;
}
HÀM THÊM NÚT VÀO ĐẦU DANH SÁCH
void addHead (DList &l, DNode* new_node)
{
if (l.pHead==NULL)
l.pHead = l.pTail = new_node;
else
{ new_node->pNext = l.pHead; // (1)
l.pHead->pPrev = new_node; // (2)
l.pHead = new_node; // (3)
}
}
HÀM THÊM NÚT VÀO CUỐI DANH SÁCH
void addTail (DList &l, DNode *new_node)
{ if (l.pHead==NULL)
l.pHead = l.pTail = new_node;
else
{ l.pTail->pNext = new_node; // (1)
new_node->pPrev = l.pTail; // (2)
l.pTail = new_node; // (3)
}
}
Share this