c ++链表数据检查

时间:2014-08-16 19:08:51

标签: c++ linked-list

所以我正在使用模板和嵌套节点类编写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

当我使用基于索引的添加

时,我可以添加任何内容

0 个答案:

没有答案