struct listnode *
readlist()
//增加了乙個節點
else
exit(1
);//異常退出
if(head !=
null
)else head = q;
p = q;
}return head;
}struct listnode *
getodd
(struct listnode *
*l )
else
exit(1
);if(head1 !=
null
)else head1 = q;
p1 = q;
}else
else
exit(1
);if(head0 !=
null
)else head0 = q;
p0 = q;}(
*l)=
(*l)
->next;
}*l = head0;
//l儲存偶數值
return head1;
//返回奇數值
}
此解法是剛學習鍊錶時從網上找到的一種解法,具體思路為新建兩個鍊錶,然後將l鍊錶中的值各自放到對應鍊錶中,最後把偶數鍊錶的頭節點給(*l)。
此解法需要申請新的記憶體,若不能及時釋放會造成記憶體空間的浪費, 所以不能算是最優的演算法。
struct listnode *
readlist()
else
scanf
("%d"
,&a);}
tail->next =
null
;return head;
}struct listnode *
getodd
(struct listnode *
*l)else
if(prev ==
null
)else
else}}
else
p1 = p1->next;}if
(head1!=
null
)return head1;
}
此解法為學習鍊錶一周多後自己的解法,具體解法思路在**中,此解法是在沒有借鑑其他解法的情況下自己想出來的,雖然花費了好長時間思考,但著實能夠加強思考問題的邏輯性與考慮的全面性,也同時使我加深和鞏固了鍊錶的相關知識,美滋滋。
1.鍊錶中的指標主要是位址之間的指來指去,對鍊錶操作時應注意位址指向,像空節點(null)在指向下乙個節點時會發生越界(段錯誤)。
2.操作鍊錶要注意鍊錶的頭不能丟,丟了頭就找不到鍊錶啦。
3.注意整個過程的邏輯性與思考問題的全面性,問題複雜時建議先在紙上畫個簡單的例子,幫助思考過程中的判斷。
奇數值結點鍊錶
輸入樣例 1 2 2 3 4 5 6 7 1 輸出樣例 1 3 5 7 2 2 4 6 include include struct listnode struct listnode readlist struct listnode getodd struct listnode l void pri...
奇數值結點鍊錶
題目 本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中奇數值的結點重新組成乙個新的鍊錶。鍊錶結點定義如下 struct listnode 函式介面定義 struct listnode readlist struct listnode getodd struct listnode l 函式...
11 7 奇數值結點鍊錶
奇數值結點鍊錶 輸入若干個正整數 輸入 1為結束標誌 建立乙個單向鍊錶,頭指標為l,將鍊錶l中奇數值的結點重新組成乙個新的鍊錶new,並輸出新建鍊錶的資訊。鍊錶結點定義 struct listnode 函式介面定義 struct listnode readlist struct listnode g...