本人是個菜雞,隨便寫寫,
在學習鏈表的插入演算法時,不太明白,于是自己寫一下思考程序,
1.前提條件:1.有元素的鏈表 2.插入的位置i 3.獲取的元素
初始化的資料:1.指標p=l->next(指向第一個元素),2.計數用的變數j=1(記錄遍歷到第幾個元素)
最開始的回圈演算法:
while ( j < i ) {
p = p->next;
++j;
}
2.關于i的值,有三種情況討論:1.i<1 2.1<=i<=l.length 3.i>l.length
這樣簡單的演算法對 3中情況的處理結果:1.直接跳過,p指向第一個元素 2.可以找到第i個元素 3.會因為p=NULL而出錯,
所以在回圈條件中要 加入p!=NULL.
3.條件該如何寫呢?如果是 || 那么會因為p!=NULL.一直成立而導致所有的i都會遍歷整個鏈表,
所以條件是 p && j<i
4.這樣子排除的情況中:1.i<1 p不為空而j>i 2.i>l.length p 為空
所以判斷為出錯的條件為 !p || j>i
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33855.html
標籤:其他
上一篇:資料結構-概述
