- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于数据结构中单链表的教学探讨
文章编号:1672-5913(2008)20-0140-05
摘 要:单链表是线性表的链式存储方式,学生的理解和掌握将为以后学习二叉树和图奠定坚实的基础。本文对单链表的存储类型定义、头结点问题和单链表长度问题进行了分析和探讨。
关键词:数据结构;单链表;头结点;单链表长度
中图分类号:G642 文献标识码:B
单链表是线性表的链式存储,它在程序设计中占有很重要的地位,学生对其理解和掌握将为以后学习二叉树和图奠定坚实的基础。好多学校使用颜蔚敏老师编写的《数据结构(C语言版)》作为教材,而这本教材在讲解单链表时给出单链表的有关概念后,直接给出单链表的存储结构定义,然后就讲解带头结点的单链表的取元素、插入、删除和创建单链表操作的实现。并没有讲解如何理解单链表的存储结构定义,为什么要用带头结点的单链表,导致学生对单链表这一结构理解不够透彻,也搞不清楚头结点的主要作用是什么。对于取元素、插入、删除操作,总是在操作结束后通过活动指针是否为空或计数器与给定位置的大小关系来判断给定位置是否合法,这不但严重影响了算法的效率,也使学生觉得隐晦难懂,更增加了学生对单链表操作理解的难度。故笔者在本文对单链表的存储类型定义、头结点问题和链表长度问题进行了分析和探讨。
1 单链表存储类型定义的理解
笔者在教学过程中发现有好多学生直到单链表所有操作学完也搞不清楚单链表到底是一个什么样的结构,在内存中是如何存储的,对单链表的插入、删除等操作更是一知半解,被指针的变化弄得晕头转向。因此,有必要在开始就给学生讲解清楚指针是怎么回事、单链表是如何存储的。
1.1 指针
内存空间是以字节为单位来存储数据的一段区域,其中每一个字节都有一个编号,该编号称为该字节的地址,以64M内存为例,因为64M=216,所以为了区分216个存储单元就需要16位二进制数,即每一个存储单元的地址用一个16位的二进制数或4位十六进制数来表示,如图1所示。要想在内存中找到某个数据就应该知道它所在的内存单元的地址。不同的数据在内存中被分配的字节数一般是不相同的,这样对某些类型的数据就对应着若干个地址编号,这些地址中第一个字节的地址就称为该数据的首地址。在C语言中,对于变量的访问形式之一,就是先得出变量的地址,然后再通过地址对变量的值进行访问。例如有定义int x=20;假设编译系统为变量x分配的存储单元的地址为2000H和2001H(如图1所示),则变量x的首地址就是2000H,程序在执行时根据变量名x就可以找到内存单元2000H,然后对其值20进行访问。
图1 内存空间表示
指针是描述计算机内存的,指针与计算机内存单元地址之间是一一对应的,它实质代表了某一个内存单元的地址。“指针变量”也是一个变量,只是这个变量中存放的是内存单元的某一地址(即存放的是指针)。例如有定义:int *p;p=x;则表示p是一指针变量,假设编译系统为变量p分配的存储单元的地址为000FH和0010H,则在000FH和0010H两个存储单元中存放着变量x的首地址2000H(如图1所示),我们形象地称p指向x,用图2表示。
1.2 单链表的存储类型定义
链式存储结构是用一组任意的存储单元来存储线性表中的数据元素,而这一组存储单元可以是连续的也可以是不连续的,为了表示数据元素之间的逻辑关系,在存放数据元素的同时,还需存储指示其后继的信息,即其后继的存储地址(指针),这两部分信息就组成了链式存储方式下线性表数据元素的存储映像,称为结点。结点结构如图3所示,其中data为数据元素,next为后继的存储地址,如果没有后继,则其next为空指针NULL。
图2 指针与变量的指向关系
图3 单链表结点结构
结点的存储类型定义为:
typedef struct LNode {
ElemType data; // 数据域
struct LNode *next; // 指针域
} LNode;
以“结点序列”表示的线性表称为单链表,如图4所示,以线性表中第一个数据元素a1的存储地址作为线性表的地址,称作线性表的头指针。
定义一个指向LNode的指针类型typedef LNode *LinkList;然后就可以定义头指针变量为:LinkList L;该定义语句等价于LNode *L。讲解时给学生强调L就是一指针变量,它所指向的存储单元中存放的是结点LNode类型的数据。例如图5所示的单链表L,假设系统为变量L分配的存储单元的地址为3004H~3005H,为数据10所在的结点分配的存储单元的地址为3000H~3003H,为数据
您可能关注的文档
- 关于本科毕业设计指导方法的几点思考.doc
- 关于Windows下组策略管理的讨论.doc
- 关于长江大学建设《计算机基础》精品课程的一点思考.doc
- 关于大型变压器设计中活尺寸应用探寻.doc
- 关于大学计算机基础教学改革的思考.doc
- 关于电子商务课程中技术实践层面的研讨.doc
- 关于对我国高职教育发展的思考.doc
- 关于标图自动评判问题的算法研究与实现.doc
- 关于反病毒技术的探讨.doc
- 关于单位内部计算机信息安全问题.doc
- 2023年度证券从业资格考试历年机考真题集附答案详解(能力提升).docx
- 2023年度自考公共课高频难、易错点题及参考答案详解【巩固】.docx
- 2024-2025学年中医执业医师能力提升B卷题库含答案详解(培优A卷).docx
- 2023年度自考专业(计算机网络)高频难、易错点题附答案详解【基础题】.docx
- 2024-2025学年度政法干警考前冲刺练习【夺分金卷】附答案详解.docx
- 2023年度自考公共课通关题库及答案详解(全国通用).docx
- 法律基础课程论文(3篇).docx
- 代理记账_法律责任(3篇).docx
- 法律规则的行为模式(3篇).docx
- 涉外法律使用法(3篇).docx
文档评论(0)