CPP插入到已排序的链表中以获得分段错误

时间:2016-05-02 04:34:24

标签: c++ linked-list

我在排序链表中实现了一个方法。

void insertInOrder(ListType & list, Node *itemP);

ListType定义如下。

struct Node {
  int data;
  Node *next;

  Node(int item);
  Node(int item, Node *n);

};

typedef Node * ListType;

以下是我实现该方法的方法。

void insertInOrder(ListType & list, Node *itemP) {
    if (list == NULL || itemP->data <= list->data) {
        itemP->next = list;
        list = itemP;
        return;
    }

    ListType p1 = list;
    ListType p2 = p1->next;

    while (p2 != NULL) {
        if (p2->data > itemP->data) {
            itemP->next = p2;   
            p1->next = itemP;
            return;
        }
        p1 = p2; 
        p2 = p2->next;
    }
    p1->next = itemP;
}

但是,在添加第三项时,我不断收到分段错误。例如,添加前2是可以的(10-> 12)。如果我想添加更多,那么无论我输入哪个号码都会收到错误。我无法找到问题,所以我在这里寻求帮助。

0 个答案:

没有答案