zoukankan      html  css  js  c++  java
  • 王道数据结构 (1) 单链表 头插法

     第一步: 原来L 的 next 域 是a1 ,将 L 的 next 域  赋值给 了 s的 next 域 实现了 s与 a1 的相连 

      s->next = L->next; // 将L的next 域指向了 新创建节点的data 域 

    第二步: 将L的next 域赋值给 s  实现了 L与 s  的相连 这样 s的左边连接 与 右边连接都实现了 

    L->next = s;  // 将L的next  指向为 s 

    代码:

    /*单链表(含头结点)*/
    #include<stdio.h>
    #include<stdlib.h>
     
    
    typedef int ElemType;
     
    typedef struct LNode{
        ElemType data;  //数据域
        struct LNode *next;  // 指针域
    }LNode,*LinkList;
     
    LinkList CreateHeadList(ElemType a[], int n);  //头插法建立单链表
    
    void      OutputList(LinkList L); 
     
    void main(){
        LinkList L = NULL;
        ElemType a[] = { 1, 2, 3, 4, 5 };
        ElemType e;
        L = CreateList1(a, 5);
      OutputList(L);
    }
     
    LinkList CreateHeadList(ElemType a[], int n){   //头插法建立单链表
        int i;
        LinkList L = NULL, s = NULL;
        L = (LNode*)malloc(sizeof(LNode));
        L->next = NULL;
     
        for (i = 0; i < n; i++){
            s = (LNode*)malloc(sizeof(LNode));  // 创建新节点 
            s->data = a[i];  
            s->next = L->next; // 将L的next 域指向了 新创建节点的data 域 
            L->next = s;  // 将L的next  指向为 s  
        }
        return L;
    }
     
    
     // 输出所有链表的思路:
    // 1.让头节点的next 指向下一个节点 
    // 2. 做一个循环 当超出时打断循环 循环内的时候 p 指向下一个 p 是 现在的节点 p=p-> next 节点会向下一个移动
    void OutputList(LinkList L){  //输出单链表全部元素
        LinkList p = L->next;
        while (p){
            printf("%d  ", p->data);
            p = p->next;
        }
        printf("
    ");
    }

     

    带头节点 与不带头节点的实现 :

    不带头节点:

    带头节点:

    比较:

    越努力越幸运
  • 相关阅读:
    redis主从配置及哨兵
    解决Linux服务器 FIN_WAIT2 连接过多的问题
    jmeter集群
    Jmeter之TCP取样器
    pydoc
    Sikulix图形自动化
    apifox接口测试工具
    Airtest自动化测试工具
    NodeJs 入门到放弃 — 入门基本介绍(一)
    uni-app小白入门自学笔记(二)
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/13358985.html
Copyright © 2011-2022 走看看