Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พิมพ์โหนด k สุดท้ายของรายการที่เชื่อมโยงในลำดับย้อนกลับ Recursive Approaches ในภาษา C


งานคือการพิมพ์โหนด k โดยเริ่มจากจุดสิ้นสุดของรายการที่เชื่อมโยงโดยใช้วิธีการแบบเรียกซ้ำ

วิธีการแบบเรียกซ้ำเป็นวิธีที่ฟังก์ชันเรียกตัวเองซ้ำแล้วซ้ำอีกจนกว่าจะมีการโทรออกและเก็บผลลัพธ์ไว้

สมมติว่ารายการมีโหนด 29, 34, 43, 56 และ 88 และค่าของ k คือ 2 กว่าผลลัพธ์จะเป็นโหนด k สุดท้ายเช่น 56 และ 88

พิมพ์โหนด k สุดท้ายของรายการที่เชื่อมโยงในลำดับย้อนกลับ Recursive Approaches ในภาษา C

ตัวอย่าง

Linked List: 29->34->43->56->88
Input: 2
Output: 88 56

ตามที่ระบุไว้ ควรใช้วิธีการแบบเรียกซ้ำซึ่งจะข้ามรายการจากการติดตามสิ้นสุดของจำนวนครั้งที่ต้องข้ามรายการและฟังก์ชันแบบเรียกซ้ำจะถูกเรียกจนถึงค่า kth โดยตัวแปรตัวชี้

โค้ดด้านล่างแสดงการใช้งาน c ของอัลกอริทึมที่กำหนด

อัลกอริทึม

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

ตัวอย่าง

#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;
}

ผลลัพธ์

หากเรารันโปรแกรมด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

last 2 nodes of a list are :522 421