Cài đặt queue bằng danh sách liên kết

Giới thiệu

Ngnạp năng lượng xếp cùng mặt hàng hóng là nhì phong cách kết cấu dữ liệu rượu cồn được thực hiện tương đối thông dụng vào thiết kế. Hai vẻ bên ngoài cấu tạo này đông đảo được gây ra dựa trên list link solo vì thế tương đối dễ để thiết đặt. Hãy thuộc mày mò xem ngăn xếp cùng hàng đợi là gì với giải pháp cài đặt ra làm sao nhé!

Để đọc hiểu bài xích này tốt nhất, chúng ta bắt buộc có kỹ năng và kiến thức về list liên kết đơn, các thao tác làm việc bên trên list kia. Nếu chúng ta như thế nào chưa chắc chắn, chúng ta có thể xem xét lại bài viết kia tại phía trên.

Bạn đang xem: Cài đặt queue bằng danh sách liên kết

Ngăn xếp


Ngnạp năng lượng xếp | Khiêm Lê

Ngăn uống xếp hay Staông chồng là một dạng list liên kết hoạt động theo nguyên tắc LIFO (Last In, First Out), tức thị những phần tử được chế tạo cuối cùng thì đang là phần tử được lôi ra thứ nhất.

Xem thêm: Giải Toán Bằng Máy Tính Casio Fx 570Es Plus, Giải Toán Bằng Máy Tính Casio Fx 570Vn Plus

Các làm việc cơ bạn dạng trên ngnạp năng lượng xếp

Các thao tác cơ bản trên ngăn xếp như sau:

IsEmpty: khám nghiệm xem ngăn uống xếp tất cả trống rỗng tốt khôngPush: thêm bộ phận vào trên cùng ngăn uống xếpPop: rước thành phần nằm tại thuộc thoát ra khỏi ngnạp năng lượng xếp và trả về cực hiếm của bộ phận kia (nếu ngăn uống xếp không rỗng)Top: trả về giá trị của thành phần nằm ở thuộc của ngăn xếp (trường hợp ngăn uống xếp không rỗng)
*
Hàng đợi

Cài đặt hàng đợi

Bây giờ đồng hồ họ hãy thuộc xem biện pháp setup hàng hóng vào C++.

Xem thêm: Giờ Làm Việc Ngân Hàng Techcombank Có Làm Việc Thứ 7 Không, Giờ Làm Việc Ngân Hàng Techcombank 2021 Mới Nhất

Cấu trúc một trong những phần tử

Hàng ngóng cũng dựa vào danh sách liên kết solo, vì thế 1 phần tử trong mặt hàng ngóng tất cả kết cấu không không giống gì một phần tử vào danh sách links 1-1.

struct Node int data; Node *next;;Cấp phát đụng, khởi gán giá trị một node và trả về shop của node đó tương tự nhỏng staông chồng hay linked list:

Node* CreateNode(int init) Node *node = new Node; node->data = init; node->next = NULL; return node;Cấu trúc một sản phẩm đợiKhông giống hệt như ngnạp năng lượng xếp, hàng đợi kinh nghiệm ta nên thống trị được cả thành phần đầu cùng cuối, vì chưng chúng ta chế tạo hàng ngóng là thêm vào cuối với mang một phần tử là đem từ đầu mặt hàng hóng. Vậy họ sẽ có được kết cấu Queue nlỗi sau:

struct Queue Node *head; Node *tail;;Tương từ, mặt hàng chờ trống rỗng khi được khởi tạo nên, ta sẽ gán head với tail bằng NULL:

void CreateQueue(Queue &q) q.head = NULL; q.tail = NULL;Kiểm tra mặt hàng chờ rỗngTương tự nhỏng staông chồng, hàng chờ trống rỗng khi bộ phận đầu hàng đợi bằng NULL, bọn họ sẽ chất vấn nhỏng sau

int IsEmpty(Queue q) if (q.head == NULL) return 1; return 0;Thêm phần tử vào cuối sản phẩm đợiThêm phần tử vào cuối mặt hàng hóng (EnQueue) triển khai cũng giống như như Khi ta thêm phần tử vào cuối danh sách link đơn, Tức là phân phối tail. Chúng ta triển khai nlỗi sau:

void EnQueue(Queue &q, Node *node) if (IsEmpty(q)) q.head = node; q.tail = node; else q.tail->next = node; q.tail = node; Lấy bộ phận đầu ra khỏi hàng đợiĐể rước phần tử đầu thoát khỏi mặt hàng ngóng (DeQueue), bọn họ đã tàng trữ quý hiếm thành phần đầu hàng chờ, tiếp đến xóa nó đi nhỏng xóa thành phần đầu của list liên kết đơn, tất nhiên là cùng với điều kiện mặt hàng đợi không rỗng. Sau Lúc rước phần tử trước tiên ra, nếu như nlỗi sẽ là phần tử tốt nhất của sản phẩm đợi thì bọn họ đang gán lại tail bởi NULL luôn. Chúng ta sẽ sở hữu đoạn code như sau:

int DeQueue(Queue &q) if (IsEmpty(q)) return 0; Node *node = q.head; int data = node->data; q.head = node->next; delete node; if (q.head == NULL) q.tail = NULL; return data;Lấy quý hiếm bộ phận đầu mặt hàng đợiLấy cực hiếm thành phần đầu sản phẩm chờ tương tự như nhỏng đem bộ phận đầu thoát ra khỏi hàng đợi, dẫu vậy ko xóa bộ phận đầu đi. Chúng ta tiến hành nhỏng sau:

int Front(Queue q) if (IsEmpty(q)) return 0; return q.head->data;

Tổng kết

Vậy là trong bài bác này, mình đã ra mắt cho các bạn thêm nhì cấu tạo tài liệu thịnh hành đó đó là ngnạp năng lượng xếp (stack) và sản phẩm chờ (queue). Nếu chúng ta thấy bài viết này giỏi, nhớ là share mang lại anh em cùng biết, những bạn cũng có thể giữ lại comment bên dưới giả dụ bao gồm bất kỳ vướng mắc làm sao. Cảm ơn các bạn sẽ theo dõi bài viết!

Source code

#include using namespace std;struct Node int data; Node *next;;struct Stack Node *head;;void CreateStack(Stachồng &s) s.head = NULL;Node *CreateNode(int init) Node *node = new Node; node->data = init; node->next = NULL; return node;int IsEmpty(Stachồng s) if (s.head == NULL) return 1; return 0;void Push(Staông chồng &s, Node *node) if (IsEmpty(s)) s.head = node; else node->next = s.head; s.head = node; int Pop(Stachồng &s) if (IsEmpty(s)) return 0; Node *node = s.head; int data = node->data; s.head = node->next; delete node; return data;int Top(Staông xã s) if (IsEmpty(s)) return 0; return s.head->data;void DestroyStack(Staông chồng &s) Node *node = s.head; while (s.head != NULL) s.head = node->next; delete node; node = s.head; void PrintStack(Staông chồng s) Node *node = s.head; while (node != NULL) cout data next; int main(){ Stachồng stack; CreateStack(stack); Node *node; for (int i = 0; i #include using namespace std;struct Node int data; Node *next;;struct Queue Node *head; Node *tail;;void CreateQueue(Queue &q) q.head = NULL; q.tail = NULL;Node* CreateNode(int init) Node *node = new Node; node->data = init; node->next = NULL; return node;void DestroyQueue(Queue &q) Node *node = q.head; while (q.head != NULL) q.head = node->next; delete node; node = q.head; q.tail = NULL;int IsEmpty(Queue q) if (q.head == NULL) return 1; return 0;void EnQueue(Queue &q, Node *node) if (IsEmpty(q)) q.head = node; q.tail = node; else q.tail->next = node; q.tail = node; int DeQueue(Queue &q) if (IsEmpty(q)) return 0; Node *node = q.head; int data = node->data; q.head = node->next; delete node; if (q.head == NULL) q.tail = NULL; return data;int Front(Queue q) if (IsEmpty(q)) return 0; return q.head->data;void PrintQueue(Queue q) Node *node = q.head; while (node != NULL) cout data next; int main(){ Queue queue; CreateQueue(queue); Node *node; for (int i = 0; i

Chuyên mục: Tin tức