首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法交换链接列表中偶数的元素

无法交换链接列表中偶数的元素
EN

Stack Overflow用户
提问于 2015-03-29 06:50:26
回答 3查看 73关注 0票数 0

我编写代码是为了两两地交换链接列表中的元素,我的代码可以处理奇数的元素,但不处理偶数的元素。

输入-1->2->3->4->5->6->7

输出-2->1->4->3->6->5->7

代码语言:javascript
复制
 void sort()
 {
     node *ptr=head;
     node *ptr1=head;
     int temp;
     while(ptr->next!=NULL)
     {
         temp=(ptr->next)->info;
         (ptr->next)->info=ptr->info;
         ptr->info=temp;

         //This statement is not working with even number of elements as
         //when it reaches last element it is going beyond the list and 
         //I am unable to rectify how to rectify this problem
         ptr=(ptr->next)->next;
     }
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-29 07:03:54

不检查当前节点是否等于NULL。当节点数甚至在此语句之后

代码语言:javascript
复制
ptr=(ptr->next)->next;

ptr可以等于NULL,并且不检查这个值。

该函数可以按以下方式编写

代码语言:javascript
复制
void adjacent_swap()
{
    for ( node *p = head; p!= NULL && p->next != NULL; p = p->next )
    {
        int tmp = p->info;
        p->info = p->next->info;
        p = p->next;
        p->info = tmp;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-29 07:01:00

我认为while(ptr->next!=NULL)应该改为while (ptr!=NULL && ptr->next!=NULL)

票数 1
EN

Stack Overflow用户

发布于 2015-03-29 07:12:44

重用您的代码只需调整以下内容:

代码语言:javascript
复制
while(ptr->next!=NULL && ptr->next->next!=null )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29326446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档