Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để triển khai danh sách liên kết thông tư Singly

Danh sách liên kết đơn vòng là một loại cấu trúc dữ liệu được tạo thành từ các nút được tạo bằng cách sử dụng cấu trúc tự tham chiếu. Mỗi nút này chứa hai phần, đó là dữ liệu và tham chiếu đến nút danh sách tiếp theo.

Chỉ cần tham chiếu đến nút danh sách đầu tiên để truy cập toàn bộ danh sách được liên kết. Đây được gọi là người đứng đầu. Nút cuối cùng trong danh sách trỏ đến đầu hoặc nút đầu tiên của danh sách. Đó là lý do tại sao đây được gọi là danh sách liên kết vòng tròn.

Một chương trình để triển khai danh sách liên kết đơn lẻ theo vòng tròn được đưa ra như sau.

Ví dụ

#include <iostream>
using namespace std;
struct Node {
   int data;
   struct Node *next;
};
struct Node* head = NULL;
void insert(int newdata) {
   struct Node *newnode = (struct Node *)malloc(sizeof(struct Node));
   struct Node *ptr = head;
   newnode->data = newdata;
   newnode->next = head;
   if (head!= NULL) {
      while (ptr->next != head)
      ptr = ptr->next;
      ptr->next = newnode;
   } else
   newnode->next = newnode;
   head = newnode;
}
void display() {
   struct Node* ptr;
   ptr = head;
   do {
      cout<<ptr->data <<" ";
      ptr = ptr->next;
   } while(ptr != head);
}
int main() {
   insert(3);
   insert(1);
   insert(7);
   insert(2);
   insert(9);
   cout<<"The circular linked list is: ";
   display();
   return 0;
}

Đầu ra

The circular linked list is: 9 2 7 1 3

Trong chương trình trên, Node cấu trúc tạo thành nút danh sách liên kết. Nó chứa dữ liệu và một con trỏ đến nút danh sách được liên kết tiếp theo. Điều này được đưa ra như sau.

Nút
struct Node {
   int data;
   struct Node *next;
};

Hàm insert () chèn dữ liệu vào đầu danh sách liên kết. Nó tạo một newnode và chèn số vào trường dữ liệu của newnode. Nếu phần đầu là NULL, thì nút mới trỏ đến chính nó, nếu không nút cuối cùng trong danh sách liên kết vòng tròn trỏ đến nút mới. Sau đó, phần đầu trỏ đến đầu danh sách, tức là đến nút mới. Điều này được đưa ra bên dưới.

void insert(int newdata) {
   struct Node *newnode = (struct Node *)malloc(sizeof(struct Node));
   struct Node *ptr = head;
   newnode->data = newdata;
   newnode->next = head;
   if (head!= NULL) {
      while (ptr->next != head)
      ptr = ptr->next;
      ptr->next = newnode;
   } else
   newnode->next = newnode;
   head = newnode;
}

Hàm display () hiển thị toàn bộ danh sách được liên kết. Ptr đầu tiên chỉ vào đầu. Sau đó, nó liên tục được chuyển tiếp đến nút tiếp theo cho đến khi tất cả các giá trị dữ liệu của các nút được in ra. Điều này được đưa ra bên dưới.

void display() {
   struct Node* ptr;
   ptr = head;
   do {
      cout<< ptr->data <<" ";
      ptr = ptr->next;
   } while(ptr != head);
}

Trong hàm main (), các giá trị khác nhau đầu tiên được chèn vào danh sách liên kết vòng tròn bằng cách gọi insert (). Sau đó, danh sách liên kết được hiển thị. Điều này được đưa ra bên dưới.

int main() {
   insert(3);
   insert(1);
   insert(7);
   insert(2);
   insert(9);
   cout<<"The circular linked list is: ";
   display();
   return 0;
}