博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2-4-单链表链式存储结构-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版...
阅读量:7287 次
发布时间:2019-06-30

本文共 980 字,大约阅读时间需要 3 分钟。

课本源码部分

第2章  线性表 - 单链表链式存储

——《数据结构》-严蔚敏.吴伟民版

       ★有疑问先阅读★

  源码使用说明  链接☛☛☛

  课本源码合辑  链接☛☛☛

      习题集全解析  链接☛☛☛

 

       本源码引入的文件  链接☛ 

 

      文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲02 线性表\04 SinglyLinkedList

 

概述

        比起之前顺序存储的单链表,链式存储有很多优点,比如删除与插入更方便,不用来回移动大量元素。但与此对应的是存取指定位置元素时将变得费劲,因为顺序存储结构中,通过数组下标就可以获取第i个元素,但是在链式存储中,必须由头指针或尾指针(如果有的话)开始遍历整个链表直至寻找到需要的元素。在元素的查找效率方面,此两种存储结构无明显差异。

解析

       单链表链式存储结构引入了链表的概念,链表由一个个小的结点组成,每个结点都包含一个数据域和指针域,指针域指向的是紧邻的下一个结点,最后一个结点指针通常为NULL。如果将最后一个结点的指针指向开头,那么这个链表就成了循环单链表。

       值得注意的是,这儿所示的链表都是有头结点的单链表。有头结点意味着头结点指针指向的结点数据域为空,头结点的存在仅仅是作为标记单链表的开始,有头结点的单链表在操作时更加方便,不用专门为头结点的增删情况写额外代码,这一点可以在实际应用中加以体会。

       单链表链式结构如下图:

可能涉及到的语法难点

       单链表链式存储也用到了动态分配内存。值得注意的是,由于头结点的指针本身就是个结构指针,所以在初始化、创建、销毁等需要改变头结点指针的地方,则要注意函数形参为二级指针,即指向头指针的指针。新手很容易犯的错误是该用二级指针的地方使用了一级指针,这样做的后果就是明明函数内分配了所需内存,但是外面却访问不到,也可能明明函数内销毁掉的内存,外面还可以访问到。这样不仅会引起内存访问差错,甚至会引起程序崩溃,所以,这一点很值得引起重视。

源码

       文件一 ☛  SinglyLinkedList.h 

       文件二 ☛  SinglyLinkedList.c 

       文件三 ☛  SinglyLinkedList-main.c (测试文档)

       文件四 ☛  TestData_HL.txt (头插法数据文档)

       文件五 ☛  TestData_TL.txt  (尾插法数据文档)

测试结果展示

 

       更多章节持续更新中...微笑

你可能感兴趣的文章
SQL语句大全
查看>>
路由器怎么设置映射?
查看>>
LayoutAnimation的使用
查看>>
苹果电脑Mac很久不用,accountsd Messages 登陆钥匙串一直提示输入密码 错误
查看>>
jquery获得select option的值 和对select option的操作
查看>>
XSuperNEST——成本小管家
查看>>
Android之Bundle传递数据详解与实例及Bundle与SharedPreferences的区别
查看>>
struts1、 struts2所有版本jar包下载地址大全
查看>>
如何电脑上怎样查看微信聊天记录
查看>>
Thrift 基础架构
查看>>
many-to-many
查看>>
java中的多态
查看>>
Python 函数式编程--装饰器
查看>>
11月28号
查看>>
DAS、NAS、SAN、iSCSI 存储方案概述
查看>>
为VMware esxi主机配置系统日志记录
查看>>
给批量用户设磁盘配额
查看>>
Docker常见问题总结(持续更新)
查看>>
5-6单元练习
查看>>
以普通用户启动的Vim如何保存需要root权限的文件
查看>>