ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:155.50KB ,
资源ID:3519842      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3519842.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言链表解析.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

c语言链表解析.doc

1、c 语言链表解析发布于:2013-01-02 11:31浏览量: 553编程思想:链表由一系列不必在内存中相连的结构组成。每一个结构均含有表元素和指向包含该元素后继元的结构指针。我们称之为 next 指针。最后一个单元的 next 指针指向NULL;该值由 C 定义并且不能与其它指针混淆。ANSI C 规定 NULL 为零。指针变量是包含存储另外某个数据的地址的变量。因此,如果 P 被声明为指向一个结构的指针,那么存储在 P 中的值就被解释为内存中的一个位置,在该位置能够找到一个结构。该结构的一个域可以通过 P-FileName 访问,其中 FileName 是我们要考察的域的名字。如图1所示

2、,这个表含有五个结构,恰好在内存中分配给它们的位置分别是1000,800,712,992和692。第一个结构的指针含有值800,它提供了第二个结构所在的位置。其余每个结构也都有一个指针用于类似的目的。当然,为了访问该表,我们需要知道在哪里能够找到第一个单元。图1为了执行打印表 PrinList(L)或查找表 Find(L,key) ,只要将一个指针传递到该表的第一个元素,然后用一些 Next 指针穿越该表即可。删除命令可以通过修改一个指针来实现。图2给出在原表中删除第三个元素的结果。图2插入命令需要使用一次 malloc 调用从系统得到一个新单元并在此后执行两次指针调整。想法通过图3给出,其中

3、虚线表示原来的指针。图3程序设计:上面的描述实际上足以使每一部分都能正常工作,但还是有几处地方可能会出问题:1、并不存在从所给定义出发在表的前面插入元素的真正显性的方法。2、从表的前面实行删除是一个特殊情况,因为它改变了表的起始端;编程的疏忽将会造成表的丢失。3、在执行删除命令时,要求我们记住被删除元素前面的表元。事实上,稍作一个简单的变化就能够解决所有这三个问题。做一个标志节点表头(header) 。图4表示一个带头头结点的链表。图4为了避免删除操作相关的一些问题,我们需要编写一个 FindPrevious 函数,它将返回我们要删除的表元的前驱元的位置。如果我们使用表头,那么当删除表的第一个

4、元素时,FindPrevious 将返回表头的位置。代码实现:按照 C 的约定,作为类型的 List(表)和 Position(位置)以及函数的原型都列在所谓的.h头文件中。具体的 Node(节点)声明则在.c 文件中。代码1、链表的类型声明#ifndef _List_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Posotion;List MakeEmpty(List L);int IsEmpty(List L);int IsLast(Position P, List

5、L) ;Position Find(ElementType X, List L);void Delete(ElementType X, List L);Position FindPrevious(ElementType X, List L);void Insert(ElementType X, List L, Position P);void DeleteList(List L);struct NodeElementType Elment;Position Next;代码2、测试一个链表是否是空表的函数。 (头结点的 Next 指向 NULL 时为空链表)int IsEmpty(List L)

6、return L-Next = NULL;代码3、测试当前位置是否是链表末尾的函数int IsLast(Position P, List L)return P-Next = NULL;代码4、查找某个结点的函数Position Find(int x, List L)Position P;P = L-Next;while(P != NULL; return P;代码5、找出含有 X 的表元的前驱元 P 的 FindPrevious 函数Position FindPrevious(ElementType X, List L)Position P;P = L;while(P-Next != NULL

7、 return P;代码6、删除链表 L 中的某个元素 X 函数void DeleteList(List L)Position P,TmpCell;P = FindPrevious(X, L)if(!IsLast(P, L) )TmpCell = P-Next;P-Next = TmpCell-Next;free(TmpCell);代码7、链表的插入函数void Insert(ElementType X, List L, Position P)Position TmpCell;TmpCell = malloc(sizeof(struct Node) ) ;if(TmpCell = NULL)FataError(“Out of space!” );TmpCell-Elment = X;TmpCell-Next = P-Next;P-Next = TmpCell

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。