- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 结构体和共用体 C语言课件
8.7 用指针处理链表 第8章 动态链表结构需要动态地分配和释放存储空间,即在需要时开辟一个结点的存储空间,在删除某个结点时要释放其占用的存储空间。C语言编译系统提供了如下相关函数。 8.7.3 处理动态链表结点所需的函数 4. sizeof运算符 在处理动态链表时,以上前2个函数在内存动态申请长度为size的连续空间的大小,是用sizeof运算符计算出来的,其语法格式为: sizeof(变量、表达式或类型名) 功能:测试变量、表达式或类型名所占内存的字节数。 8.7 用指针处理链表 第8章 【例8.10】输出链表函数。 /* 依次输出以head开头的链表中所有结点中的数据的函数 */ void print(struct studinf *head) { struct studinf *p; printf(\nNow, These %d records are:\n, n); p=head; if(head) /* 如果头指针不空,说明有结点,则输出数据 */ do { printf(%ld%5.1f\n, p-num, p-score); p=p-next; }while(p!=NULL); } 8.7.5 输出单向链表 8.7 用指针处理链表 第8章 (1)删除任意i结点(操作如图8-9所示) 语句:i-1-next=i-next; 8.7.6 在单向链表中删除结点 删除步骤: ①二个指针p1,p2,p1寻找删除位置,p2指向刚查找过的结点 ②找到删除的结点,又分两种情况 a)删除第一个结点: head=p1-next; b)删除中间或最后一个结点:p2-next=p1-next; 8.7 用指针处理链表 第8章 8.7.6 在单向链表中删除结点 若删除最后一个结点,执行以上语句,同样适合。 8.7 用指针处理链表 第8章 (2)循环条件 查找数num,若num?p1-num 并且p-next?NULL,则往后查,p2=p1,p1=p1-next; 【例8.11】删除给定数据所在结点的函数。 struct studinf *del(struct studinf *head, long num) /* 从head链表中删除学号为num的结点,返回值为链表的首地址 */ { struct studinf *p1, *p2; if(!head){printf(\nlist null!\n); return(head);} /*链表为空,结束操作*/ p1=head; while(num!=p1-nump1-next!=NULL) /*p1所指非要找的结点,且后面还有结点*/ 8.7.6 在单向链表中删除结点 8.7 用指针处理链表 第8章 { p2=p1; p1=p1-next; } /*p2紧跟p1,p1下移一个结点*/ if(num= =p1-num) /*找到了要删除的结点*/ { if(p1= =head) head=p1-next; /*若p1指向的是头结点,则把第二个结点地址赋予head*/ else p2-next=p1-next; /*否则,下一个结点地址赋给前一个结点地址*/ free(p1); printf(delete:%ld\n, num); } else printf(%ld not been found!\n, num); return(head); /*返回删除后的链表头指针*/ } 8.7.6 在单向链表中删除结点 8.7 用指针处理链表 第8章 8.7.7 在链表中插入结点 插入新结点有以下二种情况: (1)原来链表是空的(新建立一个链表,如【例8.9】) (2)原来链表非空,但又分为三种情况,如图8-10所示三种插入位置: a.插入在第一个结点前; b.插入在任意二个结点之间; c.插入在最后; 8.7 用指针处理链表 第8章 8.7.7 在链表中插入结点 8.7 用指针处理链表 第8章 8.7.7 在链表中插入结点 8.7 用指针处理链表 第8章 8.7.7 在链表中插入结点 8.8 共用体 第8章 共用体类型变量定义的一般形式
您可能关注的文档
最近下载
- 2024年二级建造师继续教育题库及答案(500题).pdf VIP
- ACD奥的斯内部资料GECB及GDCB服务器使用.pdf
- 2024辽二建继续教育复习题库.pdf VIP
- 2023年海南大学计算机科学与技术专业《计算机系统结构》科目期末试卷A(有答案).docx VIP
- 柯林斯词典词频分级词汇(5星级).pdf
- 20240327-华福证券-电力设备与新能源行业低空经济深度报告系列(1):eVTOL,下一个出行风口.pdf
- 小学英语新人教精通版三年级上册Unit 6 Food教案(2024秋).pptx.doc
- 风机基础锚栓笼组件安装技术指导(1)(1).pdf
- 《Unit 6 Food》教学设计人教精通版(三起)(2024)小学英语三年级上册.docx VIP
- 排球正面双手垫球技术优秀教案.doc
文档评论(0)