C语言程序设计之入门课程4探索.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 6 head 8 12 13 null p 15 g r 说明:1312,继续比较。 * 6 head 8 12 13 p 15 g r null 说明:1315,找到了正确的插入位置,则插入结点 p;语句为: rnext = p; p-next = g; * // 结构7.c #include stdio.h // 预编译命令 #include malloc.h // 内存空间分配 #define null 0 // 定义空指针常量 #define LEN sizeof(struct numST) // 定义常量,表示结构长度 struct numST // 结构声明 { int num; // 整型数 struct numST *next; // numST结构指针 }; 参考程序 * // 被调用函数insert(),两个形参分别表示链表和待插入的结点 void insert (struct numST **phead, struct numST *p) { // 函数体开始 struct numST *q,*r; // 定义结构指针q,r if ((*phead)==null) // 第一种情况,链表为空 { *phead = p; // 链表头指向p return; // 完成插入操作,返回 } else // 链表不为空 { // 第二种情况,p结点num值小于链表头结点的num值 if ( (*phead)-num p-num) { // 将p结点插到链表头部 p-next = *phead;// 将p的next指针指向链表头(*phead) *phead = p; // 将链表头赋值为p return; // 返回 } * // 第三种情况,循环查找正确位置 r = *phead; // r赋值为链表头 q = (*phead)-next; // q赋值为链表的下一个结点 while (q!=null) // 利用循环查找正确位置 { // 判断当前结点num是否小于p结点的num if (q-num p-num) { r = q; // r赋值为q,即指向q所指的结点 q = q-next;// q指向链表中相邻的下一个结点 } else // 找到了正确的位置 break; // 退出循环 } // 将p结点插入正确的位置 r-next = p; p-next = q; } } * // 被调用函数,形参为ST结构指针,用于输出链表内容 void print(struct numST *head) { int k=0; // 整型变量,用于计数 struct numST * r; // 声明r为ST结构指针 r=head; // r赋值为head,即指向链表头 while(r != null) // 当型循环,链表指针不为空则继续 { // 循环体开始 k=k+1; // 计数加1 printf(%d %d\n,k,r-num); r=r-next; // 取链表中相邻的下一个结点 } // 循环体结束 } * void main() // 主函数开始 { // 函数体开始 struct numST *head, *p; // ST型结构指针 head = null; // 分配两个ST结构的内存空间,用于构造链表 head = (struct numST *) malloc(LEN); head-next = (struct numST *) malloc(LEN); // 为链表中的两个结点中的num赋值为5和10 head-num = 5; head-next-num = 10; head-next-next = null; // 链表尾赋值为空 // 构造一个结点p,用于插入链表 p = (struct numST *) malloc(LEN); p-num = 8; p-next = null; insert(head, p); // 调用create函数建立链表, print(head); // 调用print函数,输出链表内容 } // 主函数结束 * 说明:函数insert()的第一个形参为struct numST**类型,即“指针的指针”。调用时送入的实参是链表头指针的地址

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档