鏈表的初始化,遍歷和插入

鏈表在我們的數(shù)據(jù)結(jié)構(gòu)是比較基礎(chǔ)的只是,同時(shí)也是面試的時(shí)候考察重點(diǎn),很多時(shí)候面試官會(huì)叫我們?cè)诿嬖嚞F(xiàn)場直接手寫鏈表的增刪改除等。在鏈表中進(jìn)行插入,要特別注意插入數(shù)據(jù)的先后順序。

好了,我們不廢話多說了,下面我們先對(duì)鏈表進(jìn)行初始化。我們一般情況有2種方法對(duì)鏈表進(jìn)行初始化,一個(gè)是頭插法(數(shù)據(jù)的插入一直都放在鏈表的前面),另一個(gè)是尾插法(數(shù)據(jù)的插入一直放在鏈表的尾部)。使用malloc,重新分配一個(gè)節(jié)點(diǎn)。

//Node 的數(shù)據(jù)結(jié)構(gòu)
typedef struct Node {
    int data;
    struct Node *next;
}Node;
//給數(shù)據(jù)結(jié)構(gòu)重新命名
typedef struct Node *LinkList;
//新建一個(gè)帶有n個(gè)Node的單鏈表,采用頭插法
void CreateListHead(LinkList *L,int n)
{
    LinkList p;
    *L=(LinkList)malloc(sizeof(Node));
    (*L)->next=NULL;
    for (int j=0; j<n; j++) {
        p=(LinkList)malloc(sizeof(Node));
        p->data=j;
        p->next=(*L)->next;
        (*L)->next=p;
    }
}
//新建一個(gè)帶有n個(gè)Node的單鏈表,采用尾插法
void CreateListTail(LinkList *L,int n)
{
    LinkList p,r;
    *L=(LinkList)malloc(sizeof(Node));
    r=*L;
    for (int i=0; i<n; i++) {
        p=(LinkList)malloc(sizeof(Node));
        p->data=i;
        r->next=p;
        r=p;
    }
    r->next=NULL;
}
//單鏈表的遍歷
void EnumList(LinkList *L)
{
    LinkList *p;
    p=L;
    while ((*p)->next) {
        *p=(*p)->next;
        printf("%d\n",(*p)->data);
    }
}
//單鏈表的插入
void InsertList(LinkList *L,int i,int n)
{
    LinkList p,r;
    p=*L;
    int index=1;
    while ((p->next) &&index<i) {
        p=p->next;
        index++;
    }
    if (!p->next)
        return;
    r=(LinkList)malloc(sizeof(Node));
    r->data=n;
    r->next=p->next;
    p->next=r;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,270評(píng)論 25 708
  • 大學(xué)的時(shí)候不好好學(xué)習(xí),老師在講臺(tái)上講課,自己在以為老師看不到的座位看小說,現(xiàn)在用到了老師講的知識(shí),只能自己看書查資...
    和玨貓閱讀 1,475評(píng)論 1 3
  • 一、 C/C++程序基礎(chǔ) 面試?yán)}1——分析代碼寫輸出(一般賦值語句的概念和方法)。 面試?yán)}2—...
    LuckTime閱讀 2,012評(píng)論 2 42
  • 調(diào)研目的: 得到作為音頻類產(chǎn)品的后起之秀,開創(chuàng)了音頻類付費(fèi)產(chǎn)品新產(chǎn)品模式,目前主流音頻類應(yīng)用中已經(jīng)有喜馬拉雅FM等...
    岳麓山民閱讀 1,818評(píng)論 0 0
  • 今天開個(gè)小差,在讀的兩本書的基礎(chǔ)上,再來看一看《區(qū)慕潔嬰幼兒左腦右腦多元智能游戲》一書。 聽說此書已幾乎不再發(fā)行,...
    屁桃爸閱讀 404評(píng)論 0 0