最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于雙鏈表刪除任意數(shù)據(jù)!

關(guān)于雙鏈表刪除任意數(shù)據(jù)!

asdhjhg 2017-05-29 16:40:39
今天歸納鏈表的時候,寫了一個刪除double linklist的任意數(shù)據(jù),我覺得自己寫的好臃腫,雖然g++過了,但是總覺得是不是哪里欠妥當。。。。。強迫癥,總是感覺代碼是不是不夠精煉。。。。請大神給我提意見。。。自己有python和linux的一點點基礎(chǔ)。。。C才學一個月,輕噴。。。一下是delete部分的代碼!struct?Node?*delete_givendata(int?data) { ????struct?Node?*current?=?head; ????struct?Node?*temp?=?NULL; ????struct?Node?*temp1?=?NULL; ????if?(head?==?NULL)?return?NULL;//empty! ????while?(current?->?data?!=?data)//find?the?data?we?want?to?delete. ????{ ????????current?=?current?->?next; ????} ????if?(current?==?head?&&?current?->?next?!=?NULL)//the?first?data?is?that?data?we?want?to?delete ????{ ????????head?=?current?->?next; ????????current?->?next?->?prev?=?NULL; ????????free(current); ????????return?head; ????} ????else?if?(current?->?prev?!=?NULL?&&?current?->?next?==?NULL)//the?last?data?is?that?data?we?want?to?delete ????{ ????????current?->?prev?->?next?=?NULL; ????????free(current); ????????return?head; ????} ????else?if?(head?->?next?==?NULL)//just?one?data?in?list ????{ ????????head?=?NULL; ????????free(current); ????????return?head; ????} ????//the?data?in?(first+1,last-1) ????temp?=?current?->?prev; ????temp1?=?current?->?next; ????temp?->?next?=?temp1; ????temp1?->?prev?=??temp; ????free(current); ????return?head; }
查看完整描述

2 回答

?
onemoo

TA貢獻883條經(jīng)驗 獲得超454個贊

你這個代碼第 7 行 while 語句處好像有邏輯問題吧? ?你說代碼通過了,我不知道你有沒有進行充分地測試。

這個 while 是為了找到等于 data 值的 node,可你沒考慮找不到的情形。

假設(shè)這個鏈表中只有一個首 node,而且它的值還不是 data。那么 while 第一次循環(huán)后 current 就已經(jīng)是 NULL 了,第二次進入 while 循環(huán)時就會因為訪問 NULL 指針而出錯退出。

查看完整回答
反對 回復(fù) 2017-06-09
?
為夢想努力_冬

TA貢獻56條經(jīng)驗 獲得超14個贊

666,厲害了

查看完整回答
反對 回復(fù) 2017-05-30
  • asdhjhg
    asdhjhg
    就這還666,其實我覺得真的寫的挺臃腫的,給點意見啊
  • 2 回答
  • 0 關(guān)注
  • 1836 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號