zoukankan      html  css  js  c++  java
  • C/C++单链表

    C/C++单链表

    先看例子,例1:定义链表

    复制代码
    //定义链表 
    struct stu 
    {
      int
    name;
      int age;
      struct stu *next;
    };
    复制代码

      

      用一组地址任意的存储单元存放线性表中的数据元素。:以元素(数据元素的映象) + 指针(指示后继元素存储位置)= 结点(表示数据元素 或 数据元素的映象)

    不得不说百度解释的太官方了。

    1.含义:多组不同类型的数的组合(数组存储是不连续的)

    2.组成: 表头+结点+表尾

    结点=数据域+指针域

    表头:只有指针域 表尾:只有数据域

    以前老师讲的还是不错的,影响深刻,不过好像还是有点云里雾里。

    LZ所理解的链表

    1.链表就是一系列结构体

    2.这个结构体有一个特别的指针,类型为该结构体类型*。

    结合例1来看很清晰,但前提是你一定要会结构体。

      正是如此,所以学链表之前一定先会结构体,而学会结构体之前一定要会用指针,又是指针。看似困难其实一点不难,一切复杂类型都是由基本类型构成的,链表也是如此,只不过起了一个时尚的名字。

    例2:建立链表函数

    复制代码
    //建立链表函数
    struct stu * creat(int n)
    {
        struct stu *head,*pf,*pb;
        int i,aa,bb;
        for(i=0;i<n;i++)
        {
            pb=(struct stu *)malloc(sizeof(struct stu));
            printf("请输入第%d个人的编号和年龄:",i+1,i+1);
            scanf("%d %d",&aa,&bb);
            pb->name=aa;
            pb->age=bb;
            if(i==0)
            pf=head=pb;
            else
            pf->next=pb;
            pf=pb;
        }
        pb->next=0;
        return(head);
    }
    复制代码


    例2用到了指针函数,结构体指针,指针学好了理解起来应该不难。

    从建立链表函数可以看出,

    pb=(struct stu *)malloc(sizeof(struct stu));

    这句为动态分配内存空间(上一篇文章简要介绍了它)。每新增一个结点,就分配一个sizeof(struct stu)大小的空间,按需分配,理想共产主义有木有。

    附上完整的例子,例3:

     View Code


    例3包括了链表的定义,构造链表的方法,链表的调用方法等。光会写出例3一点用也没有,一定要弄清楚怎么定义构造,怎么赋值,怎么使用,怎么得到具体某一个结点,结点元素的赋值,遍历方法,如何通过指针去访问。

    --------------------------------------------- 十年寒窗无人问 三更灯火五更鸣 ---------------------------------------------
     
     
    标签: 指针C/C++
  • 相关阅读:
    js 基于函数伪造的方式实现继承
    js 创建List<Map> 这种格式的集合
    微信get post请求到微信服务器 模版 素材操作
    微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法
    Jackson 高性能的JSON处理 ObjectMapper
    baseDao 使用spring3+hibernate4方式
    PropertiesUtil 读取配置文件工具类
    C语言(函数)学习之strstr strcasestr
    命令行选项解析函数(C语言):getopt()和getopt_long()
    AE插件开发的一些总结
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3219115.html
Copyright © 2011-2022 走看看