• 单链表的链式存储的两种插入方式


    /* 头插法建立单链表示例 */

    void CreateListHead(LinkList *L, int n)
    {
    LinkList p;
    int i;

    srand(time(0)); // 初始化随机数种子

    *L = (LinkList)malloc(sizeof(Node));
    (*L)->next = NULL;

    for( i=0; i < n; i++ )
    {
    p = (LinkList)malloc(sizeof(Node)); // 生成新结点
    p->data = rand()%100+1;
    p->next = (*L)->next;
    (*L)->next = p;
    }
    }

    /* 尾插法建立单链表演示 */

    void CreateListTail(LinkList *L, int n)
    {
    LinkList p, r;
    int i;

    srand(time(0));
    *L = (LinkList)malloc(sizeof(Node));
    r = *L;

    for( i=0; i < n; i++ )
    {
    p = (Node *)malloc(sizeof(Node));
    p->data = rand()%100+1;
    r->next = p;
    r = p; // 备注:初学者可能很难理解这句,重点解释。
    }

    r->next = NULL;
    }

    最后两句其实就是多增加了一个Node数据类型的变量,用它不停指向最后一个节点。然后在下一次循环中r又帮忙把最后一个节点的Next指针指向新的节点p

  • 相关阅读:
    vue的class绑定
    less里面calc() 语法
    问题
    Spring Boot面试题
    Redis面试题
    nginx面试题
    rabbitMQ面试题
    Linux+Git命令
    docker
    JAVA常用单词
  • 原文地址:https://www.cnblogs.com/sengling/p/5541048.html
Copyright © 2020-2023  润新知