第十章 用指针处理链表_第1页
第十章 用指针处理链表_第2页
第十章 用指针处理链表_第3页
第十章 用指针处理链表_第4页
第十章 用指针处理链表_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第十章用指针处理链表 第一节链表概述 1链表概述 1 数据结构的组织形式 非线性表 树 图等 线性表 线性表 顺序存储 如数组等链式存储 单向链表 双向链表等用指针处理链表 续2 2 链表概念 用结构体作为一个数据单位 每个结构体构成一个结点 用指针把结点一一链接起来 构成链表 结构体的数据组成 两部分 数据 指针例 structnode intnum floatscore structnode p 用指针处理链表 续3 3 链表的特点 链表中各结点具有相同的结构链表的结点由系统随机分配 节点之间的联系通过指针域实现为准确的定位第一个结点 每链表要有一个表头指针链表的节点需要时用mallocz 函数或calloc 函数申请内存 不需要时 使用free 函数释放所占内存段不需实现说明节点数目 只在需要时增加或减少结点 2简单链表 不讲 defineNULL0voidmain structstudent structstudenta b c head p intnum a num 100 a score 89 floatscore b num 101 b score 90 structstudent sp c num 102 c score 95 head 3内存动态分配和释放的函数 1 分配存储空间的函数void malloc unsignedsize 分配一个长度为size字节的连续存储空间 成功执行 返回所分配的存储空间的起始地址 执行失败 返回0地址2 释放所分配的存储空间voidfree void p 释放由p所指向的存储空间例 4建立结点的一般过程 1 向系统申请一个内存段 大小由单个链表结点的数据类型决定 2 给该内存段制定数据类型3 给申请到的结点添加数据 例 structstudent bp bp structstudent malloc sizeof structstudent bp num 100 bp score 95 free p 5建立新链表的一般过程 即将节点一个个按顺序建立 从第一个结点开始 1 向系统申请一个内存段 大小由单个链表结点的数据类型决定 若是第一个结点 链表表头指针head指向该内存地址 若不是 则是上一个结点的指针域指向该内存地址 2 给该内存段制定数据类型3 给申请到的结点添加数据 为结构体变量的各个成员赋值4 若本末结点 其指针域赋空指针值NULL 否则 返回1 继续建立下一个节点 动态链表的建立 例 不讲 defineLstructstudent creat sizeof structstudent structstudent head p defineNULL0head structstudent malloc L structstudenthead sp NULL intnum p structstudent malloc L floatscore scanf d s p num p score structstudent sp while p num 0 p sp head sp head sp p p structstudent malloc L scanf d f p num p score returnhead 第二节链表的基本操作 一链表结点的插入1空链表中插入一个结点1 申请一个new结点 即链表的第一个节点 也是最后一个 如 new structnode malloc sizeof structnode 2 为结点填数据 将要存得到数据对应传给数据域的各个成员3 修改有关的指针指向如 new next NULL head new 2在链表的p结点后插入一个结点 1 使new的指针存d的首地址 new next p next 2 把new的首地址存在p的指针域 p next new head b c d new p 例14 1 二链表结点的删除 把制定的节点从链表中拿出 修改有关结点的指针域释放该结点的内存空间1 若p结点是链表的第一个节点 p指针域的地址保存在head中2 若不是第一个结点 找到p前一个链表q next p next3 释放结点空间 三链表的输出 defineNULL0voidprint structstudent head structstudent structstudent p intnum p head sp floatscore while p structstudent sp printf d f p num p score p p sp 用指针处理链表 续7 四链表的检索和删除 defineNULL0structstudent del structstudent head intnum structstudent structstudent p1 p head sp intnum if p floatscore while p num num 7链表的检索和插入voidinsert structstudent head defineNULL0structstudent ip structstu

温馨提示

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

评论

0/150

提交评论