[工学]C语言链表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]C语言链表

链表的基本操作 对链表的基本操作有: (1)创建链表 (2)检索操作 (3)插入操作 (4)删除操作 11.7.3 处理动态链表所需的函数 C 语言使用系统函数动态开辟和释放存储单元 2. free 函数 函数原形: void free(void *p); 作用:释放由 p 指向的内存区。 P:是最近一次调用 calloc 或 malloc 函数时返回的值。 free 函数无返回值 C++ 的两个函数 new 类型(初值) delete [ ] 指针变量 使用 new 的优点: 可以通过对象的大小直接分配,而不管对象的具体长度是多少 建立动态链表 基本方法: 第一步:定义头结点head、尾结点 p2 和待插入结点p1,待插入的结点数据部分初始化; 第二步:该结点被头结点、尾结点同时指向。p1=p2=(struct student*)malloc(LEN);头指针部分为空,head=NULL; 第三步:重复申请待插入结点空间,对该结点的数据部分赋值(或输入值),将该结点插入在最前面,或者最后面(书上在尾部插入). P2-next=P1; P2=P1; 最后:P2-next=NULL; 建立动态链表 图11.16 例11.8 建立一个有3名学生数据的单向动态链表 #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; p1=p2=(struct student*) malloc(LEN); cinp1-nump1-score; head=NULL; 续 while(p1-num!=0) { n=n+1; /*n 是结点的个数*/ if(n==1)head=p1; else p2-next=p1; p2=p1; p1=(struct student*)malloc(LEN); cinp1-nump1-score); } p2-next=NULL; return(head); }//返回链表的头指针 11.7.5 输出链表 链表遍历 1.单向链表总是从头结点开始的; 2.每访问一个结点,就将当前指针向该结点的下一个结点移动: p=p-next; 3.直至下一结点为空 P=NULL 图 11.18 例题 9 void print (struct student *head) { struct student * p; p=head; if(head!=NULL) do { coutp - nump - score; p=p - next; }while(p!=NULL); } 链表中结点删除 需要由两个临时指针: P1: 判断指向的结点是不是要删除的结点(用于寻找); P2: 始终指向P1的前面一个结点; 图11.19 图11.20 图11.20 例 题 10 struct student *del( struct student *head, long num ) { struct student *p1, *p2; if(head==NULL) {printf(\nlist null!\n); goto end; } p1=head; while(num!=p1-nump1-next!==NULL) { p2=p1; p1=p1-next; } if(num==p1-num) { if(p1==head) head=p1-next; else p2-next=p1-next; coutnum; n=n-1; } else cout“ not been found!\n“num; end: return(head); } 11.7.7 对链表的插入操作 插入结点:将一个结点插入到已有的链表中 插入原则: 1、插入操作不应破坏原链接关系 2、插入的结点应该在它该在的位置 实现方法: 应该有一个插入位置的查找子过程 共有三种情况: 1、插入的结点最小 2、插入的结点最大 3、插入的结在中间 操 作 分 析

文档评论(0)

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

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

1亿VIP精品文档

相关文档