c++链表和函数指针
作者:野牛程序员:2023-12-28 17:17:08 C++阅读 2813
链表是一种常见的数据结构,而函数指针则允许在运行时动态地选择调用的函数。下面是一个简单的示例,演示如何在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++字符串与指针
