#include <iostream>
使用 命名空間 std.com.cn>。
class FloatList
{
private:
//Declare a structure for the list.
結構 串列節點
{
float值。
struct ListNode *next;
};
ListNode *head; // List head pointer
public:
FloatList(); // Constructor
void appendNode(float num)。
};
FloatList::FloatList()
{
head = NULL;
}
void FloatList::appendNode(float num)
{
ListNode *newNode, *nodePtr;
//分配一個新的節點& 存盤num。
newNode = new ListNode;
newNode->value = num;
newNode->next = NULL;
//如果串列中沒有節點,那么
//使newNode成為第一個節點。
if (!head)
head = newNode;
else //否則,在最后插入newNode。
{
//將nodePtr初始化為串列的頭部。
nodePtr = head;
//尋找串列中的最后一個節點 //找到串列中的最后一個節點
while (nodePtr-> next)
nodePtr = nodePtr->next。
//插入newNode作為最后一個節點。
nodePtr->next = newNode。
} cout << num << " 已經被APPENDED!" << endl;
}
int main()
{
FloatList list。
list.appendNode(2.5)。
list.appendNode(7.9)。
list.appendNode(12.6)。
}
說明。將上述帶有追加操作的關聯串列ADT轉換為關聯串列模板,使其能夠處理不同資料型別的資料。一旦你的程式完成,將你的主程式改為以下內容:
int main()
{
FloatList list。
list.appendNode('a'/span>)。
list.appendNode('b') 。
list.appendNode('c')。
cout << "Append成功!" << endl;
}
我能夠列印浮點數(2.5)(7.9)和(12.6),但是我不能編輯程式以便能夠列印'a'、'b'和'c'
。這就是預期的輸出:
a has been APPENDED!
b已經被追加了!
c已被追加!
Append成功!
uj5u.com熱心網友回復:
如果你想讓它適用于字串型別,或者char型別,你必須把你的鏈接串列變成模板化的類。看看你對節點的定義:
struct ListNode
{
float值。
struct ListNode *next;
};
你把float定義為值,那么你如何期望它能持有char型別? 我改變了你的linkedlist,所以現在它可以接受任何你想要的型別:
使用 命名空間 std.com.cn>。
template <typename T>
class FloatList
{
private:
//Declare a structure for the list.
結構 串列節點
{
T值。
struct ListNode* next;
};
ListNode* head; // List head pointer
public:
FloatList()
{
head = NULL;
}// Constructor
void appendNode(T num)
{
ListNode* newNode, * nodePtr;
///分配一個新的節點& 存盤num。
newNode = new ListNode;
newNode->value = num;
newNode->next = NULL;
//如果串列中沒有節點,那么
//使newNode成為第一個節點。
if (!head)
head = newNode;
else //否則,在最后插入newNode。
{
//將nodePtr初始化為串列的頭部。
nodePtr = head;
//尋找串列中的最后一個節點 //找到串列中的最后一個節點
while (nodePtr-> next)
nodePtr = nodePtr->next。
//插入newNode作為最后一個節點。
nodePtr->next = newNode。
} cout << num << " 已經被APPENDED!" << endl;
}
};
int main()
{
FloatList<float> list;
list.appendNode(2.5)。
list.appendNode(7.9)。
list.appendNode(12.6)。
FloatList<char> char_list;
char_list.appendNode('c') 。
char_list.appendNode('d') 。
char_list.appendNode('e')。
由于你的串列現在是模板化的類,你必須指定什么是模板化的型別:
FloatList<float> list。
解決方案真的很好很簡單,你所要做的就是在你的類定義中改變兩件事。 a) 告訴編譯器,這個類是模板化的
template <typename T>
class FloatList
b) 將所有的浮點換成T(我們想要的型別):
float value;
T值。
void appendNode(float num)
void appendNode(T num)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/315421.html
標籤:
