C语言指针链表

C语言指针链表

ID:41301667

大小:2.12 MB

页数:84页

时间:2019-08-21

C语言指针链表_第1页
C语言指针链表_第2页
C语言指针链表_第3页
C语言指针链表_第4页
C语言指针链表_第5页
资源描述:

《C语言指针链表》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1第十一章链表2例:跳马。依下图将每一步跳马之后的位置(x,y)放到一个“结点”里,再用“链子穿起来”,形成一条链,相邻两结点间用一个指针将两者连到一起。结构的概念与应用3依上图有7个结点(x1,y1)(x2,y2)(x6,y6)(x7,y7)为了表示这种既有数据又有指针的情况,引入结构这种数据类型。411.7用指针处理链表链表是程序设计中一种重要的动态数据结构,它是动态地进行存储分配的一种结构。动态性体现为:链表中的元素个数可以根据需要增加和减少,不像数组,在声明之后就固定不变;元素的位置可以变化,即可以从某个位置删除,然后再插入到一个新的地方;

2、51249A1356B1475C1021DNull1、链表中的元素称为“结点”,每个结点包括两个域:数据域和指针域;2、单向链表通常由一个头指针(head),用于指向链表头;3、单向链表有一个尾结点,该结点的指针部分指向一个空结点(NULL)。Head1249135614751021结点里的指针是存放下一个结点的地址6链表中结点的定义链表是由结点构成的,关键是定义结点;链表的结点定义打破了先定义再使用的限制,即可以用自己定义自己;递归函数的定义也违反了先定义再使用;这是C语言程序设计上的两大特例7链表的基本操作对链表的基本操作有:(1)创建链表是指

3、,从无到有地建立起一个链表,即往空链表中依次插入若干结点,并保持结点之间的前驱和后继关系。(2)检索操作是指,按给定的结点索引号或检索条件,查找某个结点。如果找到指定的结点,则称为检索成功;否则,称为检索失败。(3)插入操作是指,在结点ki-1与ki之间插入一个新的结点k’,使线性表的长度增1,且ki-1与ki的逻辑关系发生如下变化:插入前,ki-1是ki的前驱,ki是ki-1的后继;插入后,新插入的结点k’成为ki-1的后继、ki的前驱.8(4)删除操作是指,删除结点ki,使线性表的长度减1,且ki-1、ki和ki+1之间的逻辑关系发生如下变化:

4、删除前,ki是ki+1的前驱、ki-1的后继;删除后,ki-1成为ki+1的前驱,ki+1成为ki-1的后继.(5)打印输出9一个指针类型的成员既可指向其它类型的结构体数据,也可以指向自己所在的结构体类型的数据9910189.599103909910785numScorenextnext是structstudent类型中的一个成员,它又指向structstudent类型的数据。换名话说:next存放下一个结点的地址1011.7.2简单链表#defineNULL0structstudent{longnum;floatscore;structstude

5、nt*next;};main(){structstudenta,b,c,*head,*p;a.num=99101;a.score=89.5;b.num=99103;b.score=90;c.num=99107;c.score=85;head=&a;a.next=&b;b.next=&c;c.next=NULL;p=head;do{printf("%ld%5.1f",p->num,p->score);p=p->next;}while(p!=NULL);}例11.7建立和输出一个简单链表各结点在程序中定义,不是临时开辟的,始终占有内容不放,这种链表

6、称为“静态链表”1111.7.3处理动态链表所需的函数C语言使用系统函数动态开辟和释放存储单元1.malloc函数函数原形:void*malloc(unsignedintsize);作用:在内存的动态存储区中分配一个长度为size的连续空间。返回值:是一个指向分配域起始地址的指针(基本类型void)。执行失败:返回NULL12函数原形:void*calloc(unsignedn,unsignedsize);作用:在内存动态区中分配n个长度为size的连续空间。函数返回值:指向分配域起始地址的指针执行失败:返回null主要用途:为一维数组开辟动态存储

7、空间。n为数组元素个数,每个元素长度为size2.calloc函数133.free函数函数原形:voidfree(void*p);作用:释放由p指向的内存区。P:是最近一次调用calloc或malloc函数时返回的值。free函数无返回值动态分配的存储单元在用完后一定要释放,否则内存会因申请空间过多引起资源不足而出现故障。14结点的动态分配ANSIC的三个函数(头文件malloc.h)void*malloc(unsignedintsize)void*calloc(unsignedn,unsignedsize)voidfree(void*p)C++的

8、两个函数new类型(初值)delete[]指针变量/*[]表示释放数组,可有可无)*/使用new的优点:可以通过对象的大小

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。