0
我想插入一個元素排序的循環雙向鏈表,,這裏是我的嘗試:插入元件插入排序的循環雙向鏈表
void insertSorted(Node *&head,int x){
Node *temp = new Node();
temp->data = x;
temp->next = temp;
temp->prev = temp;
if(head == NULL){
head = temp;
return;
}
Node *p = head;
Node *q = NULL;
do{
q = p;
p=p->next;
}while(p != head && x>p->data);
if(q == NULL){
temp->next = head;
head->prev = temp;
head = temp;
}
else {
q->next = temp;
if(p!=NULL){
temp->next = p;
p->prev = temp;
}
temp->prev = q;
}
}
代碼工作,但問題是與第一元素每次它沒有排序,,,例子插入10 9 8 1 2 ,,,輸出將是10 1 2 8 9 ,,它應該是1 2 8 9 10
聽起來像你應該做一些調試。 –
該列表是正確的。它是循環的,所以10開始或結束,取決於你開始打印的位置。所以我會說'head'不是指向你想要的節點。調試器將幫助您瞭解這一點。 – user3386109
你忘了更新'head'。夠了嗎?還是需要進一步的幫助? – Beta