使用C语言递归方法打印链表的最后k个节点
任务是从链表的末尾打印k个节点,使用递归方法。
递归方法是一种函数不断调用自身直到满足条件的方法,因此会存储结果。
例如,链表包含节点29、34、43、56和88,k的值为2,则输出将是最后的k个节点,即56和88。

示例
Linked List: 29->34->43->56->88 Input: 2 Output: 88 56
如前所述,应使用递归方法,该方法将从末尾遍历列表,跟踪需要遍历列表的次数,并且递归函数将由指针变量调用,直到第k个值。
以下代码显示了给定算法的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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP