码迷,mamicode.com
首页 > 其他好文 > 详细

链表的三种创建形式

时间:2019-09-22 21:59:10      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:eof   就会   type   else   从表   head   get   关键点   总结   

刚刚学习完链表,总结了三种链表的创建方式,从表前插入节点,从表后插入节点和它的进化版??

#include <stdio.h>

#include <stdlib.h>

 

typedef struct node

{

    char data;

    struct node *next;

}linkList;

 //下面??的是从前面插入,但是缺点比较明显,因为链表的顺序和你输入的顺序是相反的。。。推荐使用后面的

linkList *CreatList_1()

{

    char ch;

    linkList *head = NULL,*s = NULL;

    ch = getchar();

    while(ch!=‘$‘)

    {

        s = (linkList *)malloc(sizeof(linkList));

        s->data = ch;

        s->next = head;

        head = s;

    char a = getchar();

    ch = getchar();

    }

    return head;

}

//这是从后面插入的初级形式

linkList *CreatList_2()

{

    char ch;

    linkList *head,*s,*r = NULL;

    head = NULL;

    s = NULL;

    ch = getchar();

    while(ch!=‘$‘)

    {

        s = (linkList *)malloc(sizeof(linkList));

        s->data = ch;

        if(head==NULL)head = s;

        else r->next = s;

        r = s;

    char a = getchar(); 

        ch = getchar();

    }

    if(r!=NULL)r->next = NULL;

    return head;

}

当当当当,下面是高级形式,头节点是一个不含数据的空节点,从第二个节点开始储存数据,这样刚好对应1,2,3。。。的顺序,并且少了if(r!=NULL)的判断语句。

linkList *CreatList_3()

{

    char ch;

    linkList *head, *s, *r;

    head = (linkList *)malloc(sizeof(linkList));

    r = head;

    ch = getchar();

    while(ch!=‘$‘)

    {

        s = (linkList *)malloc(sizeof(linkList));

        s->data = ch;

        r->next = s;

        r = s;

        char a = getchar();

        ch = getchar();

    }

    r->next = NULL;

    return head;

}

 

linkList *GET(linkList *head,int i)

{

    int j = 0;

    linkList *p;

    p = head;

    while((p->next!=NULL)&&(j<i))

    {

        p = p->next;

        j++;

    }

    if(i == j)return p;

    else return NULL;

}

最后要注意的一个关键点,在创建循环的每一个ch = getchar()前要加一句 char a = getchar(),用来吸收输入数据时隔开每一个数据的空格

不然就会出现每两个有用的节点间出现空节点的现象。

链表的三种创建形式

标签:eof   就会   type   else   从表   head   get   关键点   总结   

原文地址:https://www.cnblogs.com/farytormenta/p/11569199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!