Nhiệm vụ là in k nút bắt đầu từ cuối danh sách được liên kết bằng cách sử dụng phương pháp đệ quy.
Phương pháp tiếp cận đệ quy là phương pháp trong đó hàm tự gọi đi gọi lại cho đến khi thực hiện lệnh gọi và do đó lưu trữ kết quả.
Giả sử, danh sách chứa các nút 29, 34, 43, 56 và 88 và giá trị của k lớn hơn 2 so với kết quả đầu ra sẽ là k nút cuối cùng chẳng hạn như 56 và 88.
Ví dụ
Linked List: 29->34->43->56->88 Input: 2 Output: 88 56
Như đã chỉ định, phương pháp đệ quy sẽ được sử dụng để duyệt qua danh sách từ bản ghi cuối về số lần danh sách được duyệt và hàm đệ quy sẽ được gọi cho đến giá trị thứ k bởi một biến con trỏ.
Đoạn mã dưới đây cho thấy cách triển khai c của thuật toán đã cho.
Thuật toán
START Step 1 -> create node variable of type structure Declare int data Declare pointer of type node using *next Step 2 -> Declare function as node* get(int data) Create newnode using malloc function Set newnode->data = data Set newnode->next = NULL return newnode step 3 -> Declare function void lastval(node* head, int& count, int k) IF !head Return Set lastval(head->next, count, k) Set count++ IF (count <= k) Print head->data Step 4 -> In Main() Generate head using node* head = get(11) Set k and count to 0 Call lastval(head,k,count) STOP
Ví dụ
#include<stdio.h> #include<stdlib.h> // Structure of a node struct node { int data; node* next; }; // Function to get a new node node* get(int data) { struct node* newnode = (struct node*)malloc(sizeof(struct node)); newnode->data = data; newnode->next = NULL; return newnode; } //print the last k values of a node void lastval(node* head, int& count, int k) { if (!head) return; lastval(head->next, count, k); count++; if (count <= k) printf("%d ", head->data); } int main() { node* head = get(11); //inserting elements into the list head->next = get(243); head->next->next = get(321); head->next->next->next = get(421); head->next->next->next->next = get(522); int k = 2, count = 0; printf(" last %d nodes of a list are :",k); // print last k nodes lastval(head, count, k); return 0; }
Đầu ra
Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau.
last 2 nodes of a list are :522 421