我在排序链表中实现了一个方法。
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)。如果我想添加更多,那么无论我输入哪个号码都会收到错误。我无法找到问题,所以我在这里寻求帮助。