0
因此,本週早些時候我在數據結構分配中遇到了一個問題。問題是將一個循環鏈表分成兩半,一個列表中的元素位於偶數位置,另一個列表中的奇數位置的元素位於另一個列表中。這是我試用的邏輯。拆分一個循環鏈表
temp= p1 = front;
p2= front->next;
do
{p1->next = temp->next->next;
p1= temp->next->next;
p2->next = temp->next->next->next;
p2= temp->next->next->next;
temp=temp->next;
} while (temp!= front);
p1->next=p1;
p2->next=p2;
我的邏輯是創建兩個指針,一個指向第一個元素,一個指向下一個。然後我從一端到另一端遍歷列表。在我這樣做的時候,我設置了每個指針指向備用位置的元素。 注意,P1,P2,前,溫度和明年是結構節點 的點被定義爲這個
typedef struct
{
type element;
Node* next;
}Node;
但是我的教授標誌着我的答案不正確,沒有任何解釋。有人能告訴我爲什麼這是錯的嗎?
您是否測試了2個節點或3個節點循環鏈表的邏輯?你的邏輯中的主要問題是'temp = temp-> next;'。 P1和P2從列表當前位置向下移動到下一個位置,但臨時移動到下一個位置。 –
我正在使用temp來遍歷原始的循環鏈表,以便我可以引用原始列表的元素。 –
創建兩個新列表'newListOdd'和'newListEven'。循環'if(pop(oldList))push(newListOdd)else break; if(pop(oldList))push(newListEven)else break;'然後摧毀舊名單。完成,容易。 –