鏈表問題集錦

1.單鏈表的初始化眼坏,輸出以及插入刪除的基本操作

#include <iostream>
#include <string>
using namespace std;
    
struct Node{
   int data;
   Node *next;
};

Node* IniList()
{
    Node *p,*head=NULL;
    for(int i=10;i>0;--i)
    {
        p=(Node*)malloc(sizeof(Node));
        p->data=i;
        p->next=head;
        head=p;
    }
    return head;
}
void PrintList(Node *head)
{
    Node *s=head;
    while(s->next!=NULL)
    {
        cout<<s->data<<" ";
        s=s->next;
    }
    cout<<s->data;
    cout<<endl;
}

bool InsertList(Node *head,int n,int data)
{
    Node *p=head;
    if(!p) return false;
    int i=1;
    while(p->next!=NULL && i<n)
    {
        p=p->next;
        ++i;
    }
    if(!(p->next)) return false;

    Node *s;
    s=(Node*)malloc(sizeof(Node));
    s->data=data;
    s->next=p->next;
    p->next=s;
    return true;
}

void DeletList(Node* head,int n)
{
    Node* p=head,*q;
    int i=1;
    while(p && p->next && i<n-1)
    {
        p=p->next;
        ++i;
    }
    q=p->next;
    p->next=q->next;
    free(q);
}

int main()
{
    Node *head;
    head=IniList();
    PrintList(head);
    if(InsertList(head,5,13))
        PrintList(head);
    DeletList(head,4);
    PrintList(head);
    return 0;
}

2.在O(1)時間刪除鏈表節(jié)點

bool DeleteElem(Node *cur)
{
    if(!cur || !cur->next) return false;
    Node *p;
    p=cur->next;
    cur->data=p->data;
    cur->next=p->next;
    free(p);
    return true;
}

int main()
{
    Node *head;
    head=IniList();
    PrintList(head);
    Node *cur=head;
    int m=3;
    while(m--)
    {
        cur = cur->next;
    }
    if(DeleteElem(cur))
        PrintList(head);
    return 0;
}

3.反轉單鏈表

Node* ReverseList(Node* head)
{
    Node *pre=NULL,*next=NULL;
    if(!head || !head->next) return head;
    while(head!=NULL)
    {
        next=head->next;
        head->next=pre;
        pre=head;
        head=next;
    }
    return pre;
}


int main()
{
    Node *head;
    head=IniList();
    PrintList(head);
    
    head=ReverseList(head);
    PrintList(head);
    return 0;
}

4.求鏈表倒數(shù)第k個節(jié)點

Node* theKthNode(Node* head,int k)
{
    Node *slow=head,*fast=head;
    int i;
    for(i=k;i>0 && fast->next!=NULL;--i)
        fast=fast->next;
    if(i>0) return NULL;
    
    while(fast!=NULL)
    {
        fast=fast->next;
        slow=slow->next;
    }
    return slow;
}

5.求鏈表中間節(jié)點

Node* theMiddleNode(Node* head)
{
    Node* slow=head,*fast=head;
    if(head==NULL) return NULL;
    if(head->next==NULL) return head;

    while(fast!=NULL && fast->next!=NULL)
    {
        fast=fast->next->next;
        slow=slow->next;
    }
    return slow;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末凯肋,一起剝皮案震驚了整個濱河市撑教,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偷遗,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驼壶,死亡現(xiàn)場離奇詭異氏豌,居然都是意外死亡,警方通過查閱死者的電腦和手機热凹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門泵喘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人般妙,你說我怎么就攤上這事纪铺。” “怎么了碟渺?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵鲜锚,是天一觀的道長。 經(jīng)常有香客問我苫拍,道長芜繁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任绒极,我火速辦了婚禮骏令,結果婚禮上,老公的妹妹穿的比我還像新娘垄提。我一直安慰自己榔袋,他們只是感情好周拐,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凰兑,像睡著了一般速妖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上聪黎,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天罕容,我揣著相機與錄音,去河邊找鬼稿饰。 笑死锦秒,一個胖子當著我的面吹牛,可吹牛的內容都是我干的喉镰。 我是一名探鬼主播旅择,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼侣姆!你這毒婦竟也來了生真?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤捺宗,失蹤者是張志新(化名)和其女友劉穎柱蟀,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚜厉,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡长已,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昼牛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片术瓮。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贰健,靈堂內的尸體忽然破棺而出胞四,到底是詐尸還是另有隱情,我是刑警寧澤伶椿,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布辜伟,位于F島的核電站,受9級特大地震影響悬垃,放射性物質發(fā)生泄漏游昼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一尝蠕、第九天 我趴在偏房一處隱蔽的房頂上張望烘豌。 院中可真熱鬧,春花似錦看彼、人聲如沸廊佩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽标锄。三九已至顽铸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間料皇,已是汗流浹背谓松。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留践剂,地道東北人鬼譬。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像逊脯,于是被迫代替她去往敵國和親优质。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容

  • 【聲明】歡迎轉載军洼,但請保留文章原始出處→_→文章來源:http://www.reibang.com/p/08d08...
    夢工廠閱讀 3,762評論 3 31
  • 1 序 2016年6月25日夜巩螃,帝都,天下著大雨匕争,拖著行李箱和同學在校門口照了最后一張合照避乏,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,078評論 0 12
  • 轉載請注明出處:http://www.reibang.com/p/c65d9d753c31 在上一篇博客《數(shù)據(jù)結構...
    Alent閱讀 3,500評論 4 74
  • //leetcode中還有花樣鏈表題淑际,這里幾個例子,冰山一角 求單鏈表中結點的個數(shù)----時間復雜度O(n)這是最...
    暗黑破壞球嘿哈閱讀 1,514評論 0 6
  • 大學的時候不好好學習扇住,老師在講臺上講課,自己在以為老師看不到的座位看小說盗胀,現(xiàn)在用到了老師講的知識艘蹋,只能自己看書查資...
    和玨貓閱讀 1,436評論 1 3