程序设计综合实践课件-线性表的链式存储-单链表的概念_第1页
程序设计综合实践课件-线性表的链式存储-单链表的概念_第2页
程序设计综合实践课件-线性表的链式存储-单链表的概念_第3页
程序设计综合实践课件-线性表的链式存储-单链表的概念_第4页
程序设计综合实践课件-线性表的链式存储-单链表的概念_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四、线性表的链式存储采用链式存储结构,有利于线性表的插入、删除操作,每个结点中只有一个“链”时,称为单链表,每个结点中有两个“链”时,称为双向链表。“链”通常用指针来表示,线性表的链式存储结构也是实现复杂数据结构的基础。12图1.2单链表结点和单链表示例4.1单链表的概念一般结点类型定义如下:structNode{

DataElemdata;

structNode*next;};structNode*p,*q;//声明指针型变量p、q3特别需要注意指针变量p和p所指结点的区别。指针变量p和p所指结点是独立存在的当p是空指针时,禁止通过空指针访问结点内数据域或指针域通过非空指针变量p可访问结点的数据域p->data和指针域p->nextp->data和p->next既可作为右值、又可作为左值出现在表达式中。右值和左值是表达式中语法单位,意味着可出现在赋值运算符右边和左边p->next还是一个指针,只要它非空,可以继续通过它访问所指结点的数据域和指针域,如p->next->data和p->next->next指针变量p未初始化时,不可访问p->next或p->data,否则,可能造成程序崩溃C/C++语言中,动态分配的结点必须释放,否则造成内存泄漏4常见的指针操作效果示意图p=(structNode*)malloc(sizeof(structNode));p->data=20;p->next=NULL;20^pq=p;?20qpq=p->next;qp………20…操作前操作后操作?p?qp…2030…qp…2030…(待续)

p=p->next;p…2030…p…2030…q->next=p;q…2030…q…2030…p15p15操作前操作后操作(待续)q->next=p->next;q…2030…q…2030…p10p106…6…操作前操作后操作线性表中插入元素时,需要在链表中增加结点,用下述语句动态分配:p=(structNode*)malloc(sizeof(structNode));动态分配失败时,返回空指针(NULL),现代面向对象程序设计语言中,如C++,一般按异常处理。下列语句完成将p所指结点插入q所指结点后:p->next=q->next;//p后继结点设为原q后继结点q->next=p;//q后继结点设为p下列语句删除p所指结点后继结点:q=p->next;//保存后继结点指针p->next=q->next;//链

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论