首页 > 代码库 > 数据结构之第二章线性表~~继续

数据结构之第二章线性表~~继续

                 (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++];    } }

   插入,删除,查找,合并的算法的时间复杂度

插入,删除,查找,合并的算法的时间复杂度
操作元素移动(或比较)最少元素移动(或比较)最多元素移动(或比较)平均
插入0nn/2
删除0

n-1

(n-1)/2

查找1n

(n+1)/2

有序表的合并

n1+n2

n1+n2n1+n2

总结~~~~(1)对于顺序表的查找我还是不怎么懂,这一点自己要多看,以下是自己从别的地方找来的,自己可以多理解理解   ~~~需知道节点的位置及地址或者知道这个节点所在链表的序号

数据结构之第二章线性表~~继续