
第十章猪的:焦命与林奏型 第八节链表基础 一、 链表概述 ff02 89101 ◆用链表处理不定长数组。 89.5 ·什么是链表? ffcd 结构定义: struct student ffcd 89103 int num; 90 float score; fffd struct student *next; }; fffd ·链表的分类 89107 单向链表、双向链表等。 85 NULL
第十章 结构、联合与枚举类型 用链表处理不定长数组。 什么是链表? 结构定义: struct student { int num; float score; struct student * next; }; 链表的分类 单向链表、双向链表等。 一、链表概述 89101 89.5 ffcd ff02 89103 90 fffd …… ffcd 89107 85 NULL …… fffd 第八节 链表基础

第十手作钓、熊合与林茶桌型 。动态存储分配函数 原型:void*malloc(int size) 头文件:stdlib.h。 功能:分配size个字节的存储区。 返回值:分配成功,所分配区域的首返回地址。 分配失败,返回0。 例如:struct student*ps; ps=(struct student *)malloc(sizeof(struct student));
第十章 结构、联合与枚举类型 动态存储分配函数 原型:void * malloc(int size) 头文件:stdlib.h 。 功能:分配size个字节的存储区。 返回值:分配成功,所分配区域的首返回地址。 分配失败,返回 0 。 例如: struct student * ps; ps=(struct student *)malloc(sizeof(struct student));

第十章传柄、焦命与巷乐桌型 。释放内存函数 原型:void free(void*p) 头文件:stdlib.h。 功能:释放p所指向的内存空间。 返回值:无。 例如:前面说明结构指针ps,为其分配了内存, 释放内存,则写: free (ps)
第十章 结构、联合与枚举类型 释放内存函数 原型:void free(void *p) 头文件:stdlib.h 。 功能:释放p所指向的内存空间。 返回值:无 。 例如: 前面说明结构指针ps,为其分配了内存, 释放内存,则写: free(ps);

第十草猜构:焦合与巷乐奏型 二、创建链表 创建链表的过程: 4按照结构的大小分配一块内存区域。 ·将该区域的首地址赋给一个头指针。 ·继续分配一块内存区域。 ·将该区域的首地址分配给前一个结点的结点指 针变量。 ·继续上述过程,直到链表的尾
第十章 结构、联合与枚举类型 创建链表的过程: 按照结构的大小分配一块内存区域。 将该区域的首地址赋给一个头指针。 继续分配一块内存区域。 将该区域的首地址分配给前一个结点的结点指 针变量。 继续上述过程,直到链表的尾。 二、创建链表

第十手作钓、熊合与林茶桌型 ffe4, flaa 89107 pl=(struct st ps->next=pl ht student)) ff4d ffe4 例C11701
第十章 结构、联合与枚举类型 ps f1aa 80191 89.5 NULL 89107 85 NULL 89103 80 NULL ps=(struct student *) malloc(sizeof(struct student)) scanf(“%ld,%f”, &ps->num, &ps->score); ps->next=NULL; p1=(struct student *) malloc(sizeof(struct student)) p1 ffe4 ps->next=p1 ffe4 ff4d 例C11_701

第十章传钩、悲合与巷乐桑型 p2->next=pl n=3 head p2 head=NULL tudent *malloc(sizeof(struct student)) NULL 例C11701a
第十章 结构、联合与枚举类型 head p1 p2 n=0 p2 n=123 NULL 例C11_701a p1=p2=(struct student *) malloc(sizeof(struct student)) head=NULL p2->next=p1

第十章猪的:焦命与林奏型 struct student *creat( { 。0.0 do scanf ("%ld,%d",&num,&a) if (num!=0) if(head =NULL head tail; else tail tail->next; tail->num num; tail->score a; tail->next=(struct student *)malloc(LEN); else tail->next=NULL; while (num!=0); return (head);
第十章 结构、联合与枚举类型 struct student *creat( ) { …… do { scanf("%ld,%d",&num,&a); if(num!=0) { if( head == NULL ) head = tail; else tail = tail->next; tail->num = num; tail->score = a; tail->next=(struct student *)malloc(LEN); } else tail->next=NULL; }while(num!=0); return(head); }

第十手作柄、联合与林茶桑型 { if (head==NULL)head tail; else tail tail->next; tail->num=num;tail->score=a; tail->next=(struct student *)malloc(LEN); tai head
第十章 结构、联合与枚举类型 { if(head==NULL) head = tail; else tail = tail->next; tail->num=num; tail->score=a; tail->next=(struct student *)malloc(LEN); } tail head

第十章传钩、悲合与巷乐桑型 三、输出一个链表 从头结点开始,到尾结点结束。 尾结点的特征:其指向为空
第十章 结构、联合与枚举类型 从头结点开始,到尾结点结束。 尾结点的特征:其指向为空。 三、输出一个链表

第十拿猪柄:熊合与林乐桑型 三、在链表中删除一个节点 头指针 flaa 。删除一个结点, 既让上一个结点 80191 指向下一个结点。 89.5 89103 ff4d 80 ff4d (ps-1)->next=ps->next 89107 85 NULL
第十章 结构、联合与枚举类型 ⚫ 删除一个结点, 既让上一个结点 指向下一个结点。 三、在链表中删除一个节点 f1aa 80191 89.5 ffe4 89107 85 NULL 89103 80 ff4d 头指针 ps (ps-1)->next=ps->next 80191 89.5 ff4d ffe4