指针链表和共用体.ppt_第1页
指针链表和共用体.ppt_第2页
指针链表和共用体.ppt_第3页
指针链表和共用体.ppt_第4页
指针链表和共用体.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第14讲 结构体与共用体(2) -指针链表和共用体,主讲教师: 张常有 Email: 电话C语言程序设计,主要内容,作业,C语言程序设计,1.用指针处理链表(1),1.1 链表概述,链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。,说明,C语言程序设计,链表概述,1)链表有一个“头指针”变量,存放一个地址。该地址指向下一个元素。 2)链表中每一个元素称为“结点”,每个结点都应该包括两个部分:一为用户需要用的实际数据;二为下一个结点的地址。 3)链表中各元素在内存中可以不连续存放。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一元素。 4)链表的数据结构,必须利用指针变量才能实现。即:一个结点中应包含一个指针变量,用它存放下一结点的地址。,C语言程序设计,1.用指针处理链表(2),建立一个简单链表,它由三个学生数据的结点组成。输出各结点中的数据。,#define NULL 0 struct student long num; float score; struct student * next; ; main() struct student a,b,c,*head,*p; a.num=99101; a.score=89.5; b.num=99103; b.score=90; c.num=99107; c.score=85;,1.2 建立一个简单的链表(1),例 14-1,C语言程序设计,例14-1 建立一个简单的链表(2),head= ,C语言程序设计,1.用指针处理链表(3), malloc函数,void *malloc(unsigned int size); 其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即“返回值”)是一个指向分配域起始地址的指针。如果此函数未能成功地执行(如内存空间不足),则返回空指针。, calloc函数,void *calloc(unsigned n,unsigned size); 其作用是在内存的动态区存储中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如分配不成功,返回NULL。,1.3处理动态链表所需的函数(1),C语言程序设计,1.用指针处理链表(4), free函数,void free(void *p); 其作用是释放由p指向的内存区,使这部分内存区能被其他变量使用。p是最近一次调用calloc或malloc函数时返回的值。free函数无返回值。,1.3处理动态链表所需的函数(2),C语言程序设计,1.用指针处理链表(5),1.4 建立动态链表,建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。,例 14-2,C语言程序设计,例14-2写一函数建立一个有3名学生数据的单向动态链表,数据结构设计:,struct student long num; float score; struct student * next; ;,C语言程序设计,例14-2写一函数建立一个有3名学生数据的单向动态链表,算法:,C语言程序设计,例13-2写一函数建立一个有3名学生数据的单向动态链表,代码(1):,#include #define NULL 0 #define LEN sizeof(struct student) struct student long num; float score; struct student *next; ; int n; struct student *creat(void) struct student *head; struct student *p1,*p2; n=0;,C语言程序设计,例14-2写一函数建立一个有3名学生数据的单向动态链表,代码(2):,p1=p2=(struct student*)malloc(LEN); scanf(“%ld,%f”, ,C语言程序设计,1.用指针处理链表(6),1.5 输出链表,首先,

温馨提示

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

评论

0/150

提交评论