数据结构 第一讲 指针与链表.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 2005.2 第一讲 指针与链表 教学内容 动态存储空间分配 分配内存空间函数malloc 释放内存空间函数free 指针应用—链表初步 指针与数据结构 用节点内部指针关联两个节点 单链表基本概念与操作 构造单链表 循环单链表结构 链表操作—搜索指定节点 链表操作—指定节点前插入新节点,递增有序 循环链表操作—搜索指定节点 双链表节点插入 程序 计算机的内存管理—动态存储分配 空闲块2 空闲块3 空闲块4 空闲块指针 项目a占用内存 函数1 项目a 申请内存区域 空闲块1 剩余内存区域 释放内存区域 函数执行完毕 空闲块1 一个任务所占用的内存是动态分配的 动态存储空间分配 C语言中,数组的长度必须是预先定义好的,即你不能使用超过定义的数组长度,否则可能会发生不可预料的状况。 C语言不允许动态数组类型。例如: int n; scanf("%d",&n); int a[n]; 上面的语句是想用变量表示长度,通过变量对数组的大小作动态说明,这是错误的。 在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用数组的办法很难解决。 为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。 分配内存空间函数malloc 调用形式: (类型说明符*)malloc(size) 功能: 在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。 “类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。 “size”是一个无符号数。 头部函数是:#include <malloc.h> 例如:cp=(char *)malloc(100); 表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量cp。 内存可能申请失败,此时返回的cp为空指针。 #include<stdio.h> #include <malloc.h> #include<stdlib.h> int main() { int n; char *cp; printf(“输入字符串长度:"); scanf("%d",&n); cp=(char *)malloc(n); if(!cp)exit11(-1); printf("输入字符串\n"); scanf("%s",cp); printf("\n你的输入是:%s\n",cp); return(0); } 定义一个字符指针 你当前需要的字符串长度 根据你的需要申请n个单元长度内存 把字符串输入到系统动态分配的长度为n个单元的内存区域 如果申请失败,退出程序 释放内存空间函数free 调用形式: free(void*ptr); 功能: 释放ptr所指向的一块内存空间。 ptr是一个任意类型的指针变量,它指向被释放区域的首地址。 被释放区应是由malloc函数所分配的区域。 头部函数是:#include <malloc.h> 例如: cp=(char *)malloc(100); //分配100个字节的内存空间 ……. free(cp); free函数释放cp指向的内存空间。 void main(void) { struct stu{ char *num; char *name; float score; }*ps; ps=(struct stu*)malloc(sizeof(struct stu)); if(!ps){printf("memorizer over\n");exit(-1);} ps->num="102"; ps->name="Zhang ping"; ps->score=62.5; printf("Number=%s\nName=%s\nScore=%.2f\n",ps->num,ps->name,ps->score); free(ps); } 定义一个结构类型 申请一个stu结构类型长度的空间 如果申请失败给出提示信息 内存申请成功则输入信息 内存不使用之后,释放给计算机系统 这里是否可以使用“.”访问符号? 结构中的指针分量不能使用“.”访问 指针应用—链表初步 数组元素在内存是顺序排列的,它反映了逻辑上具有线性关系的数据

文档评论(0)

asd3366 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档