我試圖編寫一個名爲「在鏈接列表中隔離偶數和奇數節點」的單鏈表列表程序,但無法退出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