- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
void print_hlink_list(node *head) { node *p; p=head-next;/*从第一个(实际)结点开始*/ if(!p) printf(\n带头结点单链表是空的!); else { printf(\n带头结点的单链表各个结点的值为:\n); while(p) { printf(%5d,p-info);p=p-next;} } } 算法3.11输出带头结点单链表中各个结点的值 /*****************************************************/ /* 在带头结点单链表中查找一个值为x的结点 */ /* 文件名hlnkfinx.c,函数名find_num_hlink_list() */ /*****************************************************/ node *find_num_hlink_list(node *head,datatype x) { node *p; p=head-next;/*从第一个(实际)结点开始*/ while(pp-info!=x) p=p-next; return p; } 算法3.12在带头结点单链表中查找一个值为x的结点 node *find_pos_hlink_list(node *head,int i) { int j=0; node *p=head; if(i0){printf(\n带头结点的单链表中不存在第%d个结点!,i);return NULL;} while(pi!=j)/*没有查找完并且还没有找到*/ { p=p-next;j++;/*继续向后(左)查找,计数器加1*/ } return p;/*返回结果,i=0时,p指示的是头结点*/ } 算法3.13在带头结点单链表中查找第i个结点 2.4.2顺序队列及其实现 队列的顺序存储在C语言中可以用一维数组表示,为了标识队首和队尾,需要附设两个指针front和rear,front指示的是队列中最前面,即队首结点在数组中元素的下标,rear指示的是队尾结点在数组中元素的下标的下一个位置,也就是说rear指示的是即将插入的结点在数组中的下标。 队列的几种状态 : 下标 下标 下标 下标 下标 队列的顺序存储结构的C语言描述如下: /*****************************/ /* 队列(顺序存储)的头文件 */ /* 文件名seqqueue.h */ /*****************************/ #define MAXSIZE 100 typedef int datatype; typedef struct{ datatype a[MAXSIZE]; int front; int rear; }sequence_queue; 顺序存储队列的几个基本操作的具体实现 : /************************************************/ /* 队列(顺序存储)初始化 */ /* 文件名seqqinit.c, 函数名init_sequence_queue() */ /************************************************/ void init_sequence_queue(sequence_queue *sq) { sq-front=sq-rear=0; } 算法2.20队列(顺序存储)初始化 /***************************************************/ /* 判断队列(顺序存储)是否为空 */ /*文件名seqqempt.c, 函数名is_empty_sequence_queue() */ /***************************************************/ int is_empty_sequence_queue(sequence_queue sq) { return (sq.front==sq.rear? 1:0); } 算法2.21判断队列(顺序存储)是否为空 /*************************************
文档评论(0)