雙向迴圈鍊錶大於0前移而小於0 後移

2021-09-26 03:47:07 字數 802 閱讀 6675

雙向迴圈鍊錶》0前移,<0 後移

已知帶頭幾點的雙向迴圈煉表頭結點為list,除頭結點外每個結點的資料域為整型,請寫一演算法,將鍊錶中所有資料域大於0的結點放在小於0的前面。若煉表中除頭結點以外其他的為空,這返回0,否則,返回1.

需要移動指標,即直接將》0的資料移動到list的後繼結點,

缺點:頻繁修改指標。

// > 0 前移 ,<0 後移

int print(dlinklist list)

while (p!=list) else

}

printf("\n");

p=list->rlink;

while (p!=list)

return 1;

}

直接交換資料域,不用移動指標,同時從鍊錶的兩邊向中間靠近,思路有點像「快速排序」的思想。

// 雙向迴圈鍊錶》0前移,<0 後移

int printval(dlinklist list)

while (p!=q)

while (q->data<0&&q!=list)

if (q->rlink!=p)

}else // if

}// while

}

明顯第二種相對第一種來說,時間複雜度要快好多。

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...

迴圈鍊錶,雙向鍊錶

迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...

鍊錶 雙向迴圈鍊錶

雙向迴圈鍊錶與單鏈表一樣,都是邏輯連續 物理不連續的儲存方式,但它的效果要遠遠優於單鏈表,其結構如下 雙向迴圈鍊錶首先要有乙個頭節點,頭節點中不存放資料,真正的資料從頭節點的下乙個節點開始存放 然後每乙個節點都有兩個指標,分別指向前乙個節點和後乙個節點 最後頭尾相連,就成了雙向迴圈鍊錶。includ...