无法交换链表中偶数个元素
Unable to swap even number of elements in linked-list
我正在编写代码来成对交换链表中的元素,我的代码可以很好地处理奇数个元素,但不能处理偶数个元素
输入-1->2->3->4->5->6->7
输出-2->1->4->3->6->5->7
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;
}
}
我觉得while(ptr->next!=NULL)
应该改成while (ptr!=NULL && ptr->next!=NULL)
你没有检查当前节点是否等于NULL。当节点数为偶数时,则在这条语句之后
ptr=(ptr->next)->next;
ptr
可以等于NULL,你不检查这个。
函数可以这样写
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;
}
}
重用您的代码只需调整一下:
while(ptr->next!=NULL && ptr->next->next!=null )
我正在编写代码来成对交换链表中的元素,我的代码可以很好地处理奇数个元素,但不能处理偶数个元素
输入-1->2->3->4->5->6->7
输出-2->1->4->3->6->5->7
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;
}
}
我觉得while(ptr->next!=NULL)
应该改成while (ptr!=NULL && ptr->next!=NULL)
你没有检查当前节点是否等于NULL。当节点数为偶数时,则在这条语句之后
ptr=(ptr->next)->next;
ptr
可以等于NULL,你不检查这个。
函数可以这样写
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;
}
}
重用您的代码只需调整一下:
while(ptr->next!=NULL && ptr->next->next!=null )