[C語言]利用二級(jí)指針進(jìn)行鏈表的添加和刪除處理

天道酬勤巡社,每日記點(diǎn)筆記也是蠻有意思的眠寿。

今天溫習(xí)了下 POINTERS ON C 書中的鏈表一章掏膏,記錄下使用二級(jí)指針對(duì)鏈表進(jìn)行添加和刪除處理原杂。

插入函數(shù):


#define TRUE 1
#define FALSE 0
/*
  * brief: Single Linked List
  * para:   head       -> the head of list
  *           newValue -> item which to be inserted
*/
int sll_insert(node **head,int newValue)
{
  node * curr;
  node *new;

  // find the position
  while((curr = *head)  != NULL && curry->value <newValue)
           head = &curr->next;
 
  // new
  new = (node *)malloc(sizeof(node));
  if(new == NULL)return FALSE;
 
  //insert
  new->value = newValue;
  new->next = curr;

  *head = new;
  return TRUE;
}

刪除函數(shù):



typedefbool(* remove_fn)(node const* v);   


// 寫法一:
void remove_if(node ** head, remove_fn rm)
{
  node *curr;
  
   while( (curr = *head) != NULL)
  {
      // notice entry and curr point both point to the same one
      node *entry = curr;//delete it !!
      if(rm(entry)){
         *head = curr->next;   
         free(entry);
      }else{
        head = &curr->next;
      }
  }
}

不過注意到 寫法一 中重復(fù)比較多挨决,例如curr 其實(shí)都沒必要存在请祖!所以我更推薦寫法二。

// 寫法二:
void remove_if(node ** head, remove_fn rm)
{
    for(node** curr = head; *curr; )
    {
        node * entry = *curr;
        if(rm(entry))
        {
            *curr = entry->next;
            free(entry);
        }
        else
            curr = &entry->next;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脖祈,一起剝皮案震驚了整個(gè)濱河市肆捕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盖高,老刑警劉巖慎陵,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異或舞,居然都是意外死亡荆姆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門映凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胆筒,“玉大人,你說我怎么就攤上這事诈豌∑途龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵矫渔,是天一觀的道長彤蔽。 經(jīng)常有香客問我,道長庙洼,這世上最難降的妖魔是什么顿痪? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮油够,結(jié)果婚禮上蚁袭,老公的妹妹穿的比我還像新娘。我一直安慰自己石咬,他們只是感情好揩悄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鬼悠,像睡著了一般删性。 火紅的嫁衣襯著肌膚如雪亏娜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天蹬挺,我揣著相機(jī)與錄音维贺,去河邊找鬼。 笑死巴帮,一個(gè)胖子當(dāng)著我的面吹牛幸缕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晰韵,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼发乔,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了雪猪?” 一聲冷哼從身側(cè)響起栏尚,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎只恨,沒想到半個(gè)月后译仗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡官觅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年纵菌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休涤。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咱圆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出功氨,到底是詐尸還是另有隱情序苏,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布捷凄,位于F島的核電站忱详,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跺涤。R本人自食惡果不足惜匈睁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桶错。 院中可真熱鬧芯砸,春花似錦甸祭、人聲如沸封豪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黎比。三九已至超营,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阅虫,已是汗流浹背演闭。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颓帝,地道東北人米碰。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像购城,于是被迫代替她去往敵國和親吕座。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型瘪板。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一吴趴。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,449評(píng)論 3 44
  • //leetcode中還有花樣鏈表題侮攀,這里幾個(gè)例子锣枝,冰山一角 求單鏈表中結(jié)點(diǎn)的個(gè)數(shù)----時(shí)間復(fù)雜度O(n)這是最...
    暗黑破壞球嘿哈閱讀 1,521評(píng)論 0 6
  • (一)什么是鏈表? 鏈表是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)兰英,是一種線性表撇叁,是一種在物理存儲(chǔ)單元上非連續(xù)非順序的存儲(chǔ)結(jié)構(gòu)。鏈表...
    虞錦雯閱讀 3,794評(píng)論 0 12
  • 我絕不可能遇見沙海,正如藏罕』担花并不是西藏之花一樣正林。 我曾經(jīng)想去長白山尋找張起靈,最終無疾而終颤殴。 但等我來到稻城觅廓,我...
    沒有蛀牙的奧斯卡閱讀 1,496評(píng)論 5 2