首页 > 代码库 > 数据结构之第二章线性表~~继续
数据结构之第二章线性表~~继续
(3)顺序表的查找
int locatlink(PNODE head,int e,int (*compare)(int ,int )) {//在head中查询第一个满足条件的元素的位置,若不存在,则返回-1 i;while(i<head.length&&!(*compare)(head.elem[i],e)) ++i;if(i<head.length) return i;else return -1;}
有序表的合并
void hebing(PNODE head1,PNODE head2,PNODE head3){ int i=0,j=0,k=0; head3.listsize=head3.length=head1.length+head2.length; head3.elem=(PNODE)malloc(sizeof(NODE)); if(head3.elem==NULL) exit(-1); while(i<head1.length&&j<head2.length)//合并 { if(head1.elem[i]<=head2.elem[j]) { head3.elem[k++]=head1.elem[i++]; } else head3.elem[k++]=head2.elem[j++]; } while(i<head1.length)//插入head1的剩余元素 { head3.elem[k++]=head1.elem[i++]; } while(j<head2.length) { head3.elem[k++]==head2.elem[j++]; } }
插入,删除,查找,合并的算法的时间复杂度
操作 | 元素移动(或比较)最少 | 元素移动(或比较)最多 | 元素移动(或比较)平均 |
插入 | 0 | n | n/2 |
删除 | 0 | n-1 | (n-1)/2 |
查找 | 1 | n | (n+1)/2 |
有序表的合并 | n1+n2 | n1+n2 | n1+n2 |
总结~~~~(1)对于顺序表的查找我还是不怎么懂,这一点自己要多看,以下是自己从别的地方找来的,自己可以多理解理解 ~~~需知道节点的位置及地址或者知道这个节点所在链表的序号
数据结构之第二章线性表~~继续
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。