C++程序 打印链表倒数第N个节点

C++程序 打印链表倒数第N个节点

介绍

链表是一种非常常见的数据结构。在链表中,每个节点包含了数据和一个指向下一个节点的指针。链表有很多种操作,其中一个非常重要的操作就是查找倒数第N个节点。在本篇文章中,我们将介绍如何使用C++编写程序,实现打印链表中倒数第N个节点的功能。

程序实现

我们首先定义一个链表节点类Node,用来表示链表中的每个节点。该类包含两个变量:数据data和指向下一个节点的指针next。

class Node {
public:
    int data;
    Node *next;

    Node(int d) {
        data = d;
        next = NULL;
    }
};

接下来我们实现一个函数printNthFromLast(),它将接受一个参数“n”,表示要打印倒数第N个节点。我们将实现双指针算法,其中第一个指针先移动N步,然后第二个指针开始移动。当第一个指针到达链表的末端时,第二个指针正好指向倒数第N个节点。

void printNthFromLast(Node *head, int n) {
    Node *first = head;
    Node *second = head;

    for(int i=0; i < n; i++){
        if(first == NULL){
            return;
        }
        first = first->next;
    }

    while(first != NULL){
        first = first->next;
        second = second->next;
    }

    cout << "倒数第" << n << "个节点的值是: " << second->data;
}

最后我们编写主函数,用来创建链表并调用函数printNthFromLast()

int main() {
    Node *head = new Node(1);
    head->next = new Node(2);
    head->next->next = new Node(3);
    head->next->next->next = new Node(4);
    head->next->next->next->next = new Node(5);

    int n = 2;

    printNthFromLast(head, n);

    return 0;
}

程序输出:

倒数第2个节点的值是: 4

代码说明

本程序中,我们定义了链表节点类Node,然后实现了函数printNthFromLast()并使用双指针算法查找倒数第N个节点,最后编写了主函数来创建链表并测试printNthFromLast()函数。

值得注意的是,我们没有在函数printNthFromLast()中删除链表节点。如果需要删除链表节点,我们需要在程序结束时释放内存,否则可能会导致内存泄漏。

结论

在本篇文章中,我们介绍了如何使用C++编写程序,实现打印链表中倒数第N个节点的功能。我们通过定义链表节点类、实现双指针算法以及编写主函数来完成了这个任务。同时,我们还提醒读者注意内存释放的问题,以避免内存泄漏。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例