如何将C++单链表ADT改造为泛型模板以支持字符类型的追加输出
C++链表类模板改造方案
核心修改点
- 移除原类固定的float类型限制,改为通用类模板,支持任意可输出数据类型
- 类外实现的成员函数同步添加模板声明,适配模板类的实例化规则
- 主函数中声明链表时指定类型为char,即可实现字符的追加与打印
完整可运行代码
#include <iostream> using namespace std; // 定义通用链表模板 template <typename T> class LinkedList { private: struct ListNode { T value; struct ListNode *next; }; ListNode *head; public: LinkedList(); void appendNode(T num); }; // 模板类构造函数实现 template <typename T> LinkedList<T>::LinkedList() { head = NULL; } // 模板类追加节点方法实现 template <typename T> void LinkedList<T>::appendNode(T num) { ListNode *newNode, *nodePtr; newNode = new ListNode; newNode->value = num; newNode->next = NULL; if (!head) head = newNode; else { nodePtr = head; while (nodePtr->next) nodePtr = nodePtr->next; nodePtr->next = newNode; } cout << num << " has been APPENDED!" << endl; } int main() { // 实例化char类型的链表 LinkedList<char> list; list.appendNode('a'); list.appendNode('b'); list.appendNode('c'); cout << "Successful Append!" << endl; }
输出结果
a has been APPENDED! b has been APPENDED! c has been APPENDED! Successful Append!
内容的提问来源于stack exchange,提问作者avery
相关产品推荐
相关产品推荐

