1、LOGOLOGO链表的定义、链表的操作(建立、输出、插入结点、删除结点)Teacher teaching designCONTENTS 目 录链表的定义链表的基本操作教学内容说明教学工作总结链表的定义PART 01链表是由若干个结点连接而成,且每个结点由两部分数据组成:一部分数据域,另一部分是指针域。链表的组成链表中结点的数据类型通常是结构体类型,其中有一个特殊的成员,即指向相同结构体类型数据的指针变量。这个指针成员指向下一个结点,这样才能建立起构成链表的数据结构基础。数据类型链表是可以进行动态存储分配的一种非连续、非顺序的存储的数据结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现。定义
2、各个结点可以不连续地存放,只需由前一个结点提供下一个结点的地址,就可顺着链表一一访问各个结点。存储链表的定义struct数据类型 成员1;数据类型成员2;.数据类型 成员3;struct*;链表结点的类型定义链表的定义链表有一个特殊的指针“头指针”,头结点head,指向链表在内存的首地址。链表中的每一个结点的数据类型为结构体类型,结点有两个成员:数据成员(实际需要保存的数据)和指向下一个结构体类型结点的指针即下一个结点的地址(事实上,此链表是用于存放整型数据的动态数组)。链表的尾结点称为“表尾”,表示无后续结点,其指针域为空,写作为NULL。说明链表的结构举例链表的操作PART 02分配存储空
3、间赋值入链123链表的操作4出链在生成链表中的结点时,首先需要申请存放结点的内存空间,准备存放结点中各成员的值。调用形式:(类型说明符*)malloc(size)功能:在内存的动态存储区中分配一块长度为size 字节的连续区域。函数的返回值为该区域的首地址。“类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。“size”是一个无符号数。分配内存空间函数malloc分配存储空间调用形式:(类型说明符*)calloc(n,size)分配内存空间函数 calloc功能:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。
4、(类型说明符*)用于强制类型转换。calloc函数与malloc 函数的区别仅在于一次可以分配n块区域分配存储空间ps=(struet stu*)calloc(2,sizeof(struct stu);calloc举例2其中的sizeof(struct stu)是求stu的结构长度。因此该语句的意思是:按stu的长度分配2块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。pc=(char*)malloc(100);malloc举例1分配存储空间调用形式:free
5、(void*ptr);释放内存空间函数free功能:释放ptr所指向的一块内存空间,ptr 是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域:分配存储空间main()struct stu int num;char*name;char sex;float score;*ps;ps=(struct stu*)malloc(sizeof(struct stu);ps-num=102;ps-name=Zhang ping;ps-sex=M;ps-score=62.5;printf(Number=%dnName=%sn,ps-num,ps-na
6、me);printf(Sex=%cnScore=%fn,ps-sex,ps-score);free(ps);分配一块区域,输入一个学生数据。例题感知分配存储空间整个程序包含了申请内存空间、使用内存空间、释放内存空间三个步骤,实现存储空间的动态分配。赋值的规则与结构体变量赋值相同。(*).或-引用结点成员的形式对结点赋值就是对新结点中的各个成员赋值,用赋值语句或输入函数进行赋值赋值先把后一个结点的地址从前一个结点的节点指针成员中取出,赋值到新节点的指针成员中,让新结点指向后一个结点;然后把新结点的地址赋值给前一个结点的指针成员中,让前一个结点指向新结点。入链方法先从b结点的指针成员中,得到c的地址,赋值给d结点的指针成员;再把d指针成员赋值给结点b的指针成员解析需要先确定入链结点的插入位置,插入点有一前一后两个结点。入链就是把结点连接到链表中入链把删除结点的后一个结点的地址送到前一个结点指针成员即可方法想删除结点b,则把结点b的指针成员中存放的结点c的地址取出,赋值给指向结点b的前一个结点a的指针成员,则建立起结点a和c的指向关系解析出链就是把某个结点从链表中删除出链LOGOLOGOTeacher teaching design