将新项目插入链接列表的最常用方法是什么?

时间:2018-01-08 15:44:02

标签: linked-list

我现在正在学习数据结构,并试图为我的链表类创建一些常用方法。由于与数组不同,链表没有明确的索引,我想知道在第n个节点之前或之后插入某个值还是某个值?

例如,如果链接列表具有以下节点{a,b,c,d,e}。我可以在d之后插入一个新项目,或者我可以在第三个节点之后插入一个新项目(假设第一个节点的索引为0)。

以下两种方式中哪种更常用?

// start from index 0
// insert a new node after nth node
void LinkedList::insert_after_nth_node(int nth, int data) {
    if (nth < length) {
        Node * pointer = head;
        for (int i=0; i <= nth; i++) {
            if(i == nth) {
                Node * newNode = new Node();
                newNode->data = data;
                newNode->next = pointer->next;
                pointer->next = newNode;
            }
            pointer = pointer->next;
        }
    }
    else {
        std::cout << "Out of boundary!" << std::endl;
    }
}


void LinkedList::insert_after_by_value(int value, int data) {
    Node * pointer = find(value); // find() will return the node that contains the value, or null if value doesn't exist
    if (pointer) {
        Node * newNode = new Node();
        newNode->data = data;
        newNode->next = pointer->next;
        pointer->next = newNode;
    }
    else {
        std::cout << "Value doesn't exist in list" << std::endl;
    }
}

0 个答案:

没有答案