不做重復(fù)的事情

實(shí)現(xiàn)具有普適性的隊(duì)列創(chuàng)建方法

方法學(xué)了很久了,應(yīng)該把它記錄下來(lái)了祟峦,好記憶不如爛筆頭罚斗,什么事情久了都會(huì)有遺忘的現(xiàn)象,記下來(lái)總歸是好的宅楞。

1针姿、為什么這么做

在編程中隊(duì)列的使用應(yīng)該是比較多的,在剛學(xué)習(xí)編程學(xué)習(xí)到都最基本的隊(duì)列創(chuàng)建方法咱筛,后來(lái)在編程中都會(huì)照著初學(xué)時(shí)的模版然后依照不同的數(shù)據(jù)去創(chuàng)建隊(duì)列搓幌。如果是這樣那么每次遇到新的要求可能就會(huì)重新寫(xiě)一次代碼,做重復(fù)的事情是沒(méi)有意義的迅箩,所以我不應(yīng)該做重復(fù)的工作溉愁。應(yīng)該找到一種方法,且方法具有普適性饲趋,這樣才能更高效的完成工作拐揭。

2、該如何做

隊(duì)列的實(shí)現(xiàn)無(wú)非就是實(shí)現(xiàn)鏈表奕塑,最基本的鏈表的實(shí)現(xiàn)方式都會(huì)堂污,但是很多鏈表都又一個(gè)共同的模式督怜,在C語(yǔ)言中就是實(shí)現(xiàn)一個(gè)結(jié)構(gòu)體米愿,在結(jié)構(gòu)體中定義一個(gè)結(jié)構(gòu)體指針作為尋找下一節(jié)點(diǎn)的參數(shù)攘宙,然后就是結(jié)構(gòu)體的其他參數(shù)胎围。就像尋寶游戲,每找到一個(gè)線(xiàn)索就會(huì)知道下一個(gè)線(xiàn)索的信息酝陈,一環(huán)扣一環(huán)陶耍,最終找到寶藏犯戏。鏈表作用不是去尋寶固蚤,而是在每個(gè)線(xiàn)索點(diǎn)存放數(shù)據(jù)娘汞。仔細(xì)想一下,如果我們不在線(xiàn)索的節(jié)點(diǎn)放任何東西夕玩,那這條鏈還是不是環(huán)環(huán)相扣的呢你弦?答案是肯定的,因?yàn)榧词共环艝|西燎孟,對(duì)于鏈表的連接是沒(méi)有影響的禽作。既然沒(méi)有影響,就可以想到其實(shí)鏈表的關(guān)鍵部分不是有沒(méi)有數(shù)據(jù)揩页,而是有沒(méi)有連接下一環(huán)的扣子领迈。數(shù)據(jù)只是每一個(gè)扣子的附屬品。既然將數(shù)據(jù)剝離開(kāi)了,隊(duì)列實(shí)現(xiàn)的普遍性的方法也就提煉出來(lái)狸捅。

3、具體實(shí)例

代碼是老大寫(xiě)的累提,分享一下尘喝,學(xué)習(xí)一下這種思想。
queue.c實(shí)現(xiàn)

struct chain_t{
  struct chain_t *next; 
};

void mount(void **__chain, void *__p ){
  struct chain_t **chain = (struct chain_t **)__chain;
  struct chain_t *p = (struct chain_t *)__p;
  if(p == NULL){return;}
  if(*chain == NULL){
    *chain = p;
    *chain->next = NULL;
  }else{
    struct chain_t *q = NULL;
    for(q = *chain; q->next != NULL;q=q->next);
    q->next = p;
    p->next = NULL;
  }
}

void unmount(void **_chain, void *__p){
  struct chain_t **chain = (struct chain_t **)__chain;
  struct chain_t *p = (struct chain_t *)__p;
  if(p == NULL){return;}
  if(*chain == NULL){return;}
  else{
    struct chain_t *q = NULL;
    if(*chain == p){*chain = p->next; p->next = NULL; return;}
    else{
      for(q = *chain; q->next != NULL; q=q->next){
        if(q->next == p) {q->next = p->next;p->next = NULL; return;}
      }
    }
  }
}

使用實(shí)例:

struct data_t{
  struct data_t *next;
  uint8_t data
};

struct data_t *queue = NULL;
struct data_t *p = (struct data_t *)malloc(sizeof(struct data_t));
if(p != NULL){
  mount(&queue, p);    // <! 將節(jié)點(diǎn)加入到隊(duì)列
}

unmount(&queue, p);  // <! 將節(jié)點(diǎn)從隊(duì)列刪除
free(p);            // <! **不要忘記釋放節(jié)點(diǎn)**
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末斋陪,一起剝皮案震驚了整個(gè)濱河市朽褪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌无虚,老刑警劉巖缔赠,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異友题,居然都是意外死亡嗤堰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)度宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踢匣,“玉大人,你說(shuō)我怎么就攤上這事戈抄±牖#” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵划鸽,是天一觀的道長(zhǎng)输莺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)裸诽,這世上最難降的妖魔是什么嫂用? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮崭捍,結(jié)果婚禮上尸折,老公的妹妹穿的比我還像新娘。我一直安慰自己殷蛇,他們只是感情好实夹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著粒梦,像睡著了一般亮航。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匀们,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天缴淋,我揣著相機(jī)與錄音,去河邊找鬼。 笑死重抖,一個(gè)胖子當(dāng)著我的面吹牛露氮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钟沛,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼畔规,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恨统?” 一聲冷哼從身側(cè)響起叁扫,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畜埋,沒(méi)想到半個(gè)月后莫绣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悠鞍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年对室,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狞玛。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡软驰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出心肪,到底是詐尸還是另有隱情锭亏,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布硬鞍,位于F島的核電站慧瘤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏固该。R本人自食惡果不足惜锅减,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伐坏。 院中可真熱鬧怔匣,春花似錦、人聲如沸桦沉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纯露。三九已至剿骨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埠褪,已是汗流浹背浓利。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工挤庇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贷掖。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓嫡秕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親苹威。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淘菩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評(píng)論 25 707
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,310評(píng)論 0 6
  • 今天聽(tīng)了班班晴的分享狭郑,收獲滿(mǎn)滿(mǎn)的腹暖。 1、你得了“松鼠癥”嗎翰萨? 如今這個(gè)快速的社會(huì)脏答,讓我們?cè)絹?lái)越惶恐,無(wú)數(shù)的牛人出現(xiàn)...
    非法入境閱讀 765評(píng)論 0 2
  • 熱油鍋爆蒜末亩鬼、姜末殖告,加入紫菜洗水后裝清水入鍋煮開(kāi),加入打碎勻的雞蛋雳锋,調(diào)入鹽和雞精黄绩,關(guān)火,盛入裝有蔥花的盆里
    渡把閱讀 248評(píng)論 0 0
  • 離恨似秋草玷过,更行更遠(yuǎn)還生爽丹。試問(wèn)閑愁都幾許? 一川煙草辛蚊,滿(mǎn)城風(fēng)絮粤蝎。 梅子黃時(shí)雨。佳人笑顰袋马,最銷(xiāo)魂初澎。佳人何在,離時(shí)虑凛, ...
    忘川河忘不掉的都是過(guò)往閱讀 128評(píng)論 0 1