c++链表和函数指针
作者:野牛程序员:2023-12-28 17:17:08 C++阅读 2399
链表是一种常见的数据结构,而函数指针则允许在运行时动态地选择调用的函数。下面是一个简单的示例,演示如何在C++中使用链表和函数指针:
#include <iostream> // 定义链表节点 struct Node { int data; Node* next; Node(int value) : data(value), next(nullptr) {} }; // 打印链表元素 void printList(Node* head) { Node* current = head; while (current != nullptr) { std::cout << current->data << " "; current = current->next; } std::cout << std::endl; } // 函数指针类型定义 typedef void (*FunctionPointer)(Node*); // 对链表进行操作的函数1 void squareData(Node* head) { Node* current = head; while (current != nullptr) { current->data *= current->data; current = current->next; } } // 对链表进行操作的函数2 void doubleData(Node* head) { Node* current = head; while (current != nullptr) { current->data *= 2; current = current->next; } } int main() { // 创建链表 Node* head = new Node(1); head->next = new Node(2); head->next->next = new Node(3); // 打印原始链表 std::cout << "Original List: "; printList(head); // 使用函数指针调用函数1 FunctionPointer funcPtr1 = squareData; funcPtr1(head); // 打印操作后的链表 std::cout << "List after squaring: "; printList(head); // 使用函数指针调用函数2 FunctionPointer funcPtr2 = doubleData; funcPtr2(head); // 打印最终的链表 std::cout << "List after doubling: "; printList(head); // 释放链表内存 while (head != nullptr) { Node* temp = head; head = head->next; delete temp; } return 0; }
这个例子中,定义了一个简单的链表结构 Node
,以及两个操作链表的函数 squareData
和 doubleData
。然后,通过函数指针 FunctionPointer
类型,在运行时选择调用哪个函数。在 main
函数中,创建了一个链表,通过函数指针调用了两个不同的函数,并最终释放了链表的内存。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:c#怎么修改文件夹的名称
- 下一篇:c++字符串与指针