我试图编写一个名为“在链接列表中隔离偶数和奇数节点”的单链表列表程序,但无法退出while循环。无法退出while循环
我能够成功地编译和运行代码。我一遍又一遍地追踪程序超过四次,但无法找到catch。
我的意思
输入 “在一个链表·隔离偶数和奇数节点”:17-> 15-> 8-> 12-> 10-> 5-> 4-> 1-> 7 - > 6-> NULL;输出:8-> 12-> 10-> 4-> 6-> 17-> 15-> 5-> 1→7-> NULL
输入:8-> 12-> 10-> 5- > 4-> 1-> 6-> NULL;输出:8-> 12-> 10-> 4-> 6-> 5-> 1-> NULL
如果所有的数字都是偶数则不要更改列表 输入:8-> 12-> 10- > NULL 输出:8-> 12-> 10-> NULL
如果所有数值是奇数那么不改变列表 输入:1-> 3-> 5-> 7-> NULL 输出:1 - > 3-> 5> 7> NULL
如何解决了这个问题:
温度:遍历列表。
evenPtr:指向偶数据节点的指针。
oddPtr:指向奇数据节点的指针。
oddPtrStart:跟踪奇数据节点的开始。
My功能低于:
struct node *segregateEvenOddNodesSLL(struct node *temp)
{
struct node *evenPtr,*oddPtr,*oddPtrStart,*head=NULL;
head=temp;
while(1)
{
if(((temp->data)%2)==0) // even
{
if(evenPtr==NULL)
{
head=temp;
evenPtr=temp;
}
else
{
evenPtr->link=temp;
evenPtr=temp;
}
}
else // odd
{
if(oddPtr==NULL)
{
oddPtrStart=temp;
oddPtr=temp;
}
else
{
oddPtr->link=temp;
oddPtr=temp;
}
}
temp=temp->link;
if(temp==NULL)
{
break;
}
printf("\n Inside While.... \n");
}// end of while.
if(evenPtr==NULL)
{
return head;
}
else if(oddPtr==NULL)
{
return head;
}
else
{
oddPtr->link=NULL;
evenPtr->link=oddPtrStart;
return head;
}
}
呼叫与头部= segregateEvenOddNodesSLL(头)的功能;
像往常一样单向链表的结构是:
struct node
{
int data;
struct node *link;
};
额外的(虚拟)信用:实施过程而不使用一个以上的'if' /'else'构建体或多于一个循环结构。 – 2015-02-06 19:34:56