第十二讲 链表研究分析.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
链表 内容要点 链表的概念 链表的创建 链表的遍历 链表的概念 一种按需动态分配内存进行存储的数据结构 若干个同一结构类型的“结点”依次串接而成 单向链表(即只能从头开始访问其它结点)、双向链表 链表的概念-存储结构 线性表 顺序存储结构 特点:占用连续的内存空间 链式存储结构 特点:一般占用不连续的内存空间 链表的概念-数据类型 链表的图示 链表组成 一个链表由若干个结点组成 结点组成 数据(程序中要使用的数据) 地址(下一个结点的地址) 结点数据的存储 数据类型 链表的概念-数据类型 结构体 链表的创建 链表是一种动态地进行存储分配的数据结构,即根据需要动态地创建若干结点,并将其连成一个链。 创建一个结点的步骤? 1)开辟一个结点的内存空间 2)给结点的数据域赋值 3)给结点的指针域赋值 如何开辟结点的内存空间? 求字节数运算符 强制类型转换运算符 求字节数-运算符 sizeof(类型名) 例如: int x,y; x=sizeof(int) 计算一个int数据在内存占用的字节数 y=sizeof(double) 计算一个double数据在内存占用的字节数 sizeof(变量名) 例如: int data=4; int len; len=sizeof(data); 计算int型变量data在内存占用的字节数 强制类型转换-运算符 (类型名) 分析以下程序的输出结果 开辟内存空间 void * malloc(unsigned int size) 函数返回值 void *:返回值为开辟空间的首地址 函数的形参 开辟空间的大小(即空间的字节数) 创建链表中的一个结点 符号常量NULL代表0,表示“空地址” 例如: int *p1=NULL; int *p2=0; p1和p2指针,不指向任何对象 用于标识链表中的尾结点,即尾结点的指针域值为NULL 创建一个链表 创建链表的基本步骤 定义结点数据类型 定义指针变量 创建结点 数据域赋值 指针域赋值 自定义函数实现-创建链表 链表的遍历 head指向链表的头结点 定义一个指针变量p p=head-next; 循环(注意条件) while(p!=NULL) { printf(“%c”,p-data); p=p-next; } 自定义函数实现-创建链表,并输出 内容总结 结点的数据类型是如何定义的? 结点是如何建立的? 如何使若干个结点形成链表? 最后一个结点的特点? 如何从一个结点转到下一结点? 如何遍历所有结点? 头结点的作用? * 结点 尾结点 头结点 直观地画成 10001 56 20008 62 20060 44 20000 30 NULL 10 10040 10 56 30 62 44 10040 20008 20060 NULL 20000 10001 10032 10040 20000 20008 20060 … … … … … … … … … … … … … … … 存储地址 数据 地址 10001 head 1 2 3 4 5 顺序号 头结点 1 2 3 4 5 顺序号 10 10040 数据 地址 34 10001 56 20008 62 20060 10 10040 … … struct list { int data; struct list * next; }; typedef struct list { int data; struct list * next; }LIST; 或者 34 10001 56 20008 62 20060 10 10040 … … 数据域 指针域 返回 #includestdio.h void main( ) { float x; x=(float)(5/2); printf(“%f\n”,x); x=(float)5/2 printf(“%f\n”,x) } 输出结果: 2.000000 2.500000 #includestdio.h typedef struct list { int data; struct list *next; }LIST; void main() { LIST * p,*head; head=(LIST*)malloc( sizeof(LIST) ); p=(LIST*)malloc( sizeof(LIST) ); p-data=30; p-next=NULL; head-next=p; } 30 NULL

文档评论(0)

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

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

1亿VIP精品文档

相关文档