首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这个链表归并哪里有有关问题,求解

2012-04-18 
这个链表归并哪里有问题,求解C/C++ codevoid merge(node* p1, node* p2){if (p1 NULL || p2 NULL)re

这个链表归并哪里有问题,求解

C/C++ code
void merge(node* p1, node* p2){    if (p1 == NULL || p2 == NULL)        return;    node* head = NULL;    while (p1 && p2)    {            if (p1->data <= p2->data)        {            head = p1;            p1 = p1->next;        }        else        {            head = p2;            p2 = p2->next;        }    }    while (p1 != NULL)    {        head->next = p1;        p1 = p1->next;    }    while (p2 != NULL)    {        head->next = p2;        p2 = p2->next;    }}


[解决办法]
因为你没有修改游标head的next值,所以导致出现了问题。
C/C++ code
void merge(node* p1, node* p2){    if (p1 == NULL || p2 == NULL)        return;    node* head = NULL;    node* pt = NULL;    if (p1->data <= p2->data)   {         head = p1;         p1 = p1->next;     }    else     {          head = p2;          p2 = p2->next;      }      pt = head;    while (p1 && p2)    {            if (p1->data <= p2->data)        {            pt->next = p1;            pt = p1;            p1 = p1->next;        }        else        {            pt->next = p2;            pt = p2;            p2 = p2->next;        }    }    while (p1 != NULL)    {        pt->next = p1;        pt = p1;        p1 = p1->next;    }    while (p2 != NULL)    {        pt->next = p2;        pt = p2;        p2 = p2->next;    }} 

热点排行