教学课件 C语言简明教程(第二版)--李忠儒.ppt

教学课件 C语言简明教程(第二版)--李忠儒.ppt

  1. 1、本文档共366页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上一页 下一页 返 回 (2)被删除结点若是第一个结点。这种情况只需使head指向第二个结点即可。即head=pb->next。 (3)被删结点若不是第一个结点,则需要查找要删除的结点,查找时从pb指向的第一个结点开始,检查该结点中的num值是否等于要删除的那个学号,如果相等,就找到是要删除的结点,如果不等,就将pb后移一个结点,直到找到要删除的结点或遇到链尾为止。在移动pb的同时移动pf,使pf记录pb的前驱结点,这种情况使被删结点的前一结点指向被删结点的后一结点即可。即pf->next=pb->next。 【程序代码】 TYPE * delete(TYPE * head,int num) { TYPE *pf,*pb; if(head==NULL) /*如为空表,输出提示信息*/ { printf("\nempty list!\n"); return head;} pb=head; while (pb->num!=num && pb->next!=NULL) /*当前结果不是要删除的结点,而且也不是最后一个结点时,继续循环*/ { pf=pb; pb=pb->next; } /*pf指向当前结点,pb指向下一结点*/ if(pb->num==num) { if(pb==head) head=pb->next; 上一页 下一页 返 回 else pf->next=pb->next; free(pb); printf("The node is deleted\n");} else printf("The node not been foud!\n"); return head; } 4.链表的插入操作 【例9.10】 写一个函数,在链表中指定位置插入一个结点。 【编程思路】 在一个链表的指定位置插入结点,要求链表本身必须是已按某种规律排好序的。例如,在学生数据链表中,要求按学号顺序插入一个结点。设被插结点的指针为pi。可在四种不同情况下插入。 (1)原表是空表,只需使head指向被插结点。即:    head=pi;   pi->next=NULL (2)被插结点值最小,应插入第一结点之前。这种情况下使head指向被插结点,被插结点的指针域指向原来的第一结点则可。 即:pi->next=pb; /*pb为第一个结点的地址*/   head=pi; 上一页 下一页 返 回 (3)在其它位置插入,使插入位置的前一结点的指针域指向被插结点,使被插结点的指针域指向插入位置的后一结点。 即:pi->next=pb; pf->next=pi; (4)在表末插入,这种情况下使原表末结点指针域指向被插结点,被插结点指针域置为NULL。 即:pb->next=pi; pi->next=NULL; 【程序代码】 TYPE * insert(TYPE * head,TYPE *pi) { TYPE *pf,*pb; pb=head; if(head==NULL) /*空表插入*/ { head=pi;pi->next=NULL; } else { while((pi->num>pb->num)&&(pb->next!=NULL)) {pf=pb; pb=pb->next; }/*找插入位置*/ 上一页 下一页 返 回 if(pi->num<=pb->num) { if(head==pb) head=pi; /*在第一结点之前插入*/ else pf->next=pi;/*在其它位置插入*/ pi->next=pb; } else { pb->next=pi; pi->next=NULL; } /*在表末插入*/ } return head; } 9.3 共用体 9.3.1 共用体类型及变量的定义 上一页 下一页 返 回 1.共用体类型的定义 定义形式: union 共用体名 { 类型标识符1 成员名1; 类型标识符2 成员名2; … }; 例如: union data { int i; char ch; float f; }; 上一页 下一页 返 回 2.共用体变量的定义 与定义结构体类型一样,定义共用体变量也有三种形式: (1)先定义共用体类型,再定义共用体变量。 union data { int i;

文档评论(0)

喜宝 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档