所以我正在使用模板和嵌套节点类编写Linked List类。我创建一个int节点时,我必须列出int
列表和string
列表,如果我添加它,它仍然会添加到字符串列表中。我只是想知道如何检查数据以确保它与当前链表的数据类型相同。
如果您需要代码我可以添加它,我只是不确定您需要哪些代码。
先添加:
void addFirst(T data){
if(this->size == 0)
this->head = new Node(data);
else{
Node *newNode = new Node(data);
newNode->next = head;
head = newNode;
}
this->size++;
}; //add to the beginning of the list
节点:
class Node{
public:
T data;
Node* next;
Node() {};
Node(T data) {this->data = data; this->next = NULL;};
void setData(T data) {this->data = data;};
void setNext(Node* next) {this->next = next;};
Node getNext() {return next;};
T getData() {return data;};
};
添加索引:
void add(int index) { //add at index
T data;
std::cout << "Enter your data: ";
std::cin >> data;
try{
if(index < 0 || index > this->size){
throw std::out_of_range("please choose a valid range");
}
if(index == 0){
addFirst(data);
}
else{
Node *newNode = new Node(data);
Node *prev, *curr = this->head;
for(int i = 0; i < index; i++){
prev = curr;
curr = this->head;
}
newNode->next = curr;
prev->next = newNode;
this->size++;
}
}catch(const std::exception& e){
std::cerr << "caught exception " << e.what() << endl;
}
}; //add at a specified index
当我使用基于索引的添加
时,我可以添加任何内容