LATEST

Tạo node mới trong DSLK đôi

Trong bài viết này, codehow sẽ hướng dẫn các bạn cách tạo node mới trong DSLK đôi. Khi chúng ta muốn thực hiện các thao tác như thêm, xóa, tìm kiếm, sắp xếp, ... thì cần phải tạo node đầu tiên.

Vậy làm thế nào để có thể tạo mới được một node trong DSLK đôi? Và cần những gì để có thể tạo được node mới thì ngay bây giờ hãy bắt đầu cùng mình thôi nhé.

Tạo node mới trong DSLK đôi cần những gì?

Để có thể tạo được một node mới trong DSLK đôi, trước tiên ta cần thực hiện tạo cấu trúc dữ liệu của DSLK đôi đã nhé. Ở bài mình đã có hướng dẫn cụ thể, các bạn có thể xem lại nhé. Nếu các bạn chưa xem bài viết đó thì đừng lo lắng nhé, ngay bây giờ mình sẽ nhắc lại trong phần này.

bai31 01 png

Tạo cấu trúc dữ liệu của DSLK đôi bao gồm các cấu trúc dưới đây:

  • Cấu trúc node.
  • Cấu trúc DSLK đôi.
  • Khởi tạo NULL cho node.
/* tạo cấu trúc một Node bao gồm giá trị data và con trỏ pNext, pTail */
struct Node  {
    int data; // giá trị của node
    struct Node* next;// con trỏ next trỏ đến phần tử sau
    struct Node* prev;// con trỏ prev trỏ đến phần tử trước
};
/* Khai báo Node đầu pHead và Node cuối pTail*/
struct SingleList
{
  Node *pHead; //Node đầu pHead
  Node *pTail; // Node cuối pTail
};
void Initialize(SingleList &list)
{
  list.pHead=list.pTail=NULL;// khởi tạo giá trị cho Node đầu và Node cuối là Null
}

Không những đây là bước đầu tiên để thực hiện thao tác tạo mới node, mà các thao tác khác như xóa, tìm kiếm, sắp xếp đều phải thực hiện nó đầu tiên nhé.

Cách tạo node mới trong DSLK đôi

Sau khi đã tạo cấu trúc dữ liệu cho DSLK đôi, bây giờ chúng ta đã có thể tạo mới node được rồi.

bai32 01 png

Việc tạo mới node bao gồm các bước sau đây:

Bước 1: Tạo một node p bằng cách sử dụng cấu trúc node chúng ta đã khai báo ở trên.

Node *p = new Node;

Bước 2: Kiểm tra xem node p có NULL hay không, nếu NULL thì thoát khỏi hàm. Nếu không null mới thực hiện bước tiếp theo.

if(p == NULL) exit(1);// nếu p rỗng thì thoát khỏi hàm

Bước 3: Trỏ con trỏ pNext và pPre về giá trị NULL.

p->next = NULL; // khi tạo mới một node thì p->next == p->prev == null
    p->prev = NULL;

Bước 4: Gán giá trị data cho node p bằng x. Sau đó return p.

p->data = x;//gán giá trị data = x
    return p;

Full code tạo node mới trong DSLK đôi.

//Tạo mới một Node
Node *creatNode(int x ){ //tao thong tin cho node
    Node *p = new Node; // tạo mới một node p
    if(p == NULL) exit(1);// nếu p rỗng thì thoát khỏi hàm
    p->next = NULL; // khi tạo mới một node thì p->next == p->prev == null
    p->prev = NULL;
    p->data = x;//gán giá trị data = x
    return p;
}

Để hiểu rõ hơn về cách tạo node mới, các bạn hãy xem ví dụ thực hiện ngay phần bên dưới nhé.

Ví dụ tạo node mới trong DSLK đôi

Đề bài: Quản lý thông tin của một khách hàng bao gồm thông tin: tên (char), tuổi (int), quê quán (char). Thực hiện các thao tác sau đây:

  • Tạo cấu trúc node.
  • Tạo cấu trúc DSLK đôi.
  • Khởi tạo node NULL.
  • Tạo cấu trúc khachhang với các thông tin như đề bài.
  • Tạo mới node khách hàng với tham số truyền vào là struct khachhang.

Bây giờ chúng ta sẽ đi thực hiện thực thao tác mà đề bài yêu cầu nhé.

Bước 1: Tạo cấu trúc khách hàng.

/* tạo cấu trúc khách hàng */
struct khachhang{
  char ten[50]; // khai báo tên
  int tuoi; // khai báo tuổi
  char quequan[120]; // khai báo quê quán
};

Bước 2: Tạo cấu trúc node.

/* tạo cấu trúc một Node bao gồm giá trị data và con trỏ pNext, pTail */
struct Node  {
    khachhang *data; // giá trị của node được lấy tù struct khachhang
    struct Node* next;// con trỏ next trỏ đến phần tử sau
    struct Node* prev;// con trỏ prev trỏ đến phần tử trước
};

Bước 3: Tạo cấu trúc DSLk đôi.

/* Khai báo Node đầu pHead và Node cuối pTail*/
struct SingleList
{
  Node *pHead; //Node đầu pHead
  Node *pTail; // Node cuối pTail
};

Bước 4: Khởi tạo NULL cho node.

//khởi tạo giá trị cho Node
void Initialize(SingleList *&list)
{
    list=new SingleList;
    list->pHead=NULL;
    list->pTail = NULL;
}

Bước 5: Tạo node mới khách hàng với tham số truyền vào là struct khachhang.

//tạo node khách hàng
Node *CreateNode(khachhang *kh)
{
    Node *pNode=new Node;
    if(pNode!=NULL)
    {
        pNode->data=kh;
        pNode->next=NULL;
    }
    else
    {
        cout<<"cap phat bo nho that bai!!!";
    }
    return pNode;
}

Full code:

/* tạo cấu trúc khách hàng */
struct khachhang{
  char ten[50]; // khai báo tên
  int tuoi; // khai báo tuổi
  char quequan[120]; // khai báo quê quán
};
/* tạo cấu trúc một Node bao gồm giá trị data và con trỏ pNext, pTail */
struct Node  {
    khachhang *data; // giá trị của node được lấy tù struct khachhang
    struct Node* next;// con trỏ next trỏ đến phần tử sau
    struct Node* prev;// con trỏ prev trỏ đến phần tử trước
};
/* Khai báo Node đầu pHead và Node cuối pTail*/
struct SingleList
{
  Node *pHead; //Node đầu pHead
  Node *pTail; // Node cuối pTail
};
//khởi tạo giá trị cho Node
void Initialize(SingleList *&list)
{
    list=new SingleList;
    list->pHead=NULL;
    list->pTail = NULL;
}
//tạo node khách hàng
Node *CreateNode(khachhang *kh)
{
    Node *pNode=new Node;
    if(pNode!=NULL)
    {
        pNode->data=kh;
        pNode->next=NULL;
    }
    else
    {
        cout<<"cap phat bo nho that bai!!!";
    }
    return pNode;
}

Kết luận

Như vậy là chúng ta đã cùng nhau tìm hiểu về cách tạo mới node trong DSLK đôi. Về cơ bản thì nó tương tự như việc tạo mới node trong DSLK đơn đúng không ạ. Ở bài tiếp theo, mình sẽ hướng dẫn các bạn cách duyệt danh sách liên kêt đôi, các bạn chú ý theo dõi nhé !!!

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Top