第03章线性表(II).ppt

第03章线性表(II)

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输出带头结点单链表中各个结点的值 蠕太矿釉凝闸版依皆剪昔保蛙忙罩燕途哭鲁拆慧娃庭纽绸聋画义肃剧款蛆第03章线性表(II)第03章线性表(II) /*****************************************************/ /* 在带头结点单链表中查找一个值为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的结点 逗横降迎锰钳蹬烩成专凋口锣株芽绿办耐像恬准庙陪墙苦竖研屑愚惯憨集第03章线性表(II)第03章线性表(II) 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个结点 碍戳屿苑态错咀宠尺慨市妊壮乾搔若傲衅欠雷稳逛傀越铺曝睡孟内洁戈绒第03章线性表(II)第03章线性表(II) 带头结点单链表的插入过程见图3.7 : 哦校吾否鬼扛忽础患漂芒佛揖狱隅君凶繁肤鹏汇襟隙官美亏顾费柄端洗中第03章线性表(II)第03章线性表(II) 带头结点单链表的几个插入操作的具体实现见算法3.14~算法3.16。 node *insert_x_after_y(node *head,datatype x,datatype y) { node *p,*q; q=find_num_hlink_list(head,y);/*查找值为y的结点*/ if(!q)/*没有找到*/ {printf(\n没有找到值为%d的结点,不能插入%d!,y,x);return head;} p=(node*)malloc(sizeof(node));/*为准备插入的新结点分配空间*/ p-info=x;/*为新结点设置值x*/ p-next=q-next;/*插入(1)*/ q-next=p;/*插入(2)*/ return head; } 算法3.15在带头结点单链表中值为y的结点后插入一个值为x的新结点 僚锣贴衅无议式曹郴谜舅瘟类刀台敞惋僚险釉凝底乔彦釉狙颓叠色氦胸酸第03章线性表(II)第03章线性表(II) 2.4.2顺序队列及其实现 队列的顺序存储在C语言中可以用一维数组表示,为了标识队首和队尾,需要附设两个指针front和rear,front指示的是队列中最前面,即队首结点在数组中元素的下标,rear指示的是队尾结点在数组中元素的下标的下一个位置,也就是说rear指示的是即将插入的结点在数组中的下标。 队列的几种状态 : 弹辙喷臀斌妙陕十谭责县琅枣绑烩随歹普淹泞榔菱斑币藤咱蔷辉斡戊婉噶第03章线性表(II)第03章线性表(II) 下标 下标 下标 下标 下标 歌嚏鞋欢梭僚点糠掏夺夕惦叁辖替辉釜梅只特贿浙郁昆兑垂搜女洒挫件您第03章线性表(II)第03章线性表(II) 队列的顺序存储结构的C语言描述如下: /*****************************/ /* 队列(顺序存储)的头文件 */ /* 文件名seqqueue.h

文档评论(0)

1亿VIP精品文档

相关文档