链表-创建链表

作者: 茶还是咖啡 | 来源:发表于2020-03-05 08:13 被阅读0次

链表的每个节点分为指针域和数据域,创建链表的过程可以理解为将每个节点的指针域指向其他节点,最终形成一个链条,即链表。

尾插创建链表

创建链表的过程可以大致的说是将当前节点的指针域执指向下一个节点,然后下一个节点的指针域指向下下个节点,不断重复这样的动作。
eg: 有五个节点,数据为别为1,2,3,4,5,创建链表的过程如下:

  1. 初始情况


  2. 1节点的指针域指向2节点,此时链表有两个节点,分别是1,2


  3. 2节点的指针域指向3节点,此时链表有3哥节点,分别是1,2,3


  4. 重复上面的动作直至链表创建完成


code

// 链表节点定义
typedef struct node{
    int data;
    struct node *next;
}ElemSN;
// 尾插创建单向链表
ElemSN* createLinkList(int data[],int len){
    if(data==NULL||len<=0){
        return NULL;
    }
    ElemSN *head = NULL,*pNew = NULL,*tail = NULL;
    for(int i = 0;i<len;i++){
        pNew = (ElemSN*)malloc(sizeof(ElemSN));
        pNew->data = data[i];
        pNew->next = NULL;
        if(head==NULL){
            head = pNew;
            tail = pNew;
        }else{
            tail->next = pNew;
            tail = tail->next;
        }
    }
    return head;
}
// 递归实现
ElemSN* createLinkList1(int data[],int len){
    if(data==NULL||len<=0){
        return NULL;
    }
    ElemSN *pNew = malloc(sizeof(ElemSN));
    pNew->data = data[0];
    pNew->next = createLinkList1(data+1,len-1);
    return pNew;
}

头插创建链表

头插创建链表跟尾插刚好相反,新来的节点不作为尾结点,而是作为头结点,不断的插入到链表的头部,并更换头指针的指向。因为后来的节点作为头结点,所以最终形成的链表为数组的倒叙结果。

  1. 初始情况,只有一个节点。


  2. 插入第二个节点


  3. 插入第三个节点


  4. 以此类推


code

ElemSN* createlinkList2(int data[],int len){
    if(data==NULL||len<=0){
        return NULL;
    }
    ElemSN *pNew = NULL,*head  = NULL;
    for(int i=0;i<len;i++){
        pNew = (ElemSN*)malloc(sizeof(ElemSN));
        pNew->data = data[i];
        pNew->next = head;
        head = pNew;
    }
    return head;
}

相关文章

  • 链表的创建(头插法,尾插法)

    尾插法创建链表 头插法创建链表 打印链表 删除节点 按升序创建链表,Head是虚头节点 检索链表,并返回节点指针

  • 使用php创建一个单项链表

    创建链表 创建一个单项链表。

  • 单链表 常用操作(golang)

    (单链表备忘记录)知识点: 单链表结构 创建链表方法头插法创建尾插法创建 遍历链表 逆序反转链表迭代递归头插法就地...

  • 链表-创建链表

    链表的每个节点分为指针域和数据域,创建链表的过程可以理解为将每个节点的指针域指向其他节点,最终形成一个链条,即链表...

  • 线性表-双向链表与双向循环链表

    双向链表 双向链表示意图如下: 数据结构定义 创建双向链表 双向链表插入元素 双向链表删除元素 双向链表打印元素 ...

  • JavaScript数据结构2——单链表

    以下的代码包括了以下几部分 单链表初始化 单链表的插入 单链表的删除 单链表的创建(头插法) 单链表的创建(尾插法...

  • 关于链表的预备知识

    定义结点 创建链表结点 连接链表各结点 打印链表结点的值 打印整个链表中的值 删除整个链表 在链表尾部加入结点 特...

  • python数据结构——单链表

    链表 python实现链表链表的初始化创建元素的插入和删除链表的遍历元素的查询链表的删除链表的逆序判断链表是否有环...

  • 链表、二叉树、栈、队列的实现

    目录 1.链表 链表 链表定义 2.创建链表(尾插法) 二叉树 栈 队列

  • 链表的操作和算法相关

    github->demo1、创建(单链表、双链表、循环链表)2、翻转单链表(递归和非递归)3、判断链表是否存在环。...

网友评论

    本文标题:链表-创建链表

    本文链接:https://www.haomeiwen.com/subject/emnpchtx.html