1樓:
「dulinklist p=l->next; /* p指向第乙個結點 */」
如果你上面的句子正確的話,l就是指向第乙個節點的first指標(first指標就是最開始的那個指標,它不是結構,只是乙個指標,作用是然鍊錶有個頭,可以給其它函式找到並且使用)
所以如果p==l,就是說明鍊錶中連乙個結構都沒有,那麼當然沒有要尋找的「i」結構了,所以第i個元素不存在
2樓:篤俠
語句if(p==l||j>i)
有誤,應該是
if(p==l)才對
3樓:
首先dulinklist p=l->next; /* p指向第乙個結點 */
而且當while迴圈中在還沒找到第j個元素時,p所指向鍊錶元素的指標不斷往前移,即
p=p->next;
while不斷迴圈下去直到p=l且 j>i 時退出迴圈,那麼此時已經把整個鍊錶的元素都遍歷完了(即p=l),並且 j 不等於 i (即 j>i),則說明該雙向鍊錶中不存在該元素,所以return error;
4樓:
p的初值取l->next,利用p!=l來判斷鍊錶結束,說明這是個雙向環形鍊錶。
由此,while的判斷條件是鍊錶未結束,或未到第i個節點。
不過退出迴圈後,的確只要判斷p==l就行了,不會存在j>i的情況
C語言問題,乙個C語言問題!
上面的寫的遞迴函式很不錯,這種方法即容易理解,又不需要用陣列,很好!只是有點小問題,比如輸入 8 123,輸出 0173 前面多個0 另外,也不夠簡潔,易讀。我修改如下 include include void trans int n,int m void main include stdio.h ...
簡單C問題,乙個簡單C問題
for a b c 的執行順序是 a初始化 b判斷d執行 c遞增 減改變條件 b判斷d執行 c遞增 減改變條件 b判斷 d執行c遞增 減改變條件 b判斷所以你每次輸入後,y 再判斷txt x y n 此時判斷的不是你輸入的值,而是txt中原始的輸入位置的下乙個位置的值。如果只錯第一句的話 for x...
數學邏輯問題每人差,數學對乙個人的邏輯思維培養到底有多重要
那一元根本不存在,這道題是把兩個角度計算錢數混淆到一起了最 初 abc每人支出10元,共30元,均在菜販子手中d講價 菜販子退回5元,剩下25元 d得到2元 共27元abc每人拿回1元,相當於每人支出9元,共27元ps 30 3 9 3,d又只拿走了2元,還剩下一元30 3 9 3 這個3裡面根本就...
c語言的問題,C語言的乙個問題
這應該是一元二次方程的求根公式。型如 a x方 b x c 0 a是二次項係數 b是一次項係數 c是常數項,x1 x2是方程的兩個根,p q不代表什麼意思 是求根公式的中間步驟而已。 這是一元二次方程ax bx c 0的兩個根ax bx c 0 兩邊同時除以a x bx a c a 0 兩邊加上配方...
C的小問題,C的乙個小問題
include define i 3 int main void for a 0 a 10 i i 1 a n a return 0 按照你的要求在你的程式基礎上改的,除錯後沒問題。補充回答 當你輸入少於10個字元的時候,在最後乙個有效字元後你敲的是 回車 也就是說,在最後乙個有效字元的後面的乙個元...