你可能喜欢
填空题
完成下列折半插入排序算法。
Void binasort(struct node r[MAXSIZE],int n)
{for(i=2;i<=n;i++){
r[0]=r[i];low=1;high=i-1;
while(low<=high){
mid=(low+high)/2;
if(r[0].key
}
for(j=i-1;j>=low;j- -)r[j+1]=r[j] ;
r[low]=() ;
}
}
填空题
在下面冒泡排序算法中填入适当内容,以使该算法在发现有序时能及时停止。
bubble(R)
Rectype R[n];
{int i,j,exchang;
Rectype temp;
i=1;
do
{exchang=False;
for(j=n;j>=¬¬i+1 ;j- -)
if(R[j]
R[j-1]=R[j];
R[j]=temp;
exchang=True ;
}
() ;
}while(exchang=False );
}
填空题
下面算法实现,用一棵二叉树中的结点建立一个按关键字值从小到大次序排列的带表头结点的双向循环链表。二叉树的结点结构如下所示:
其中,p是指向结点的指针;p->key表示结点的关键字域,p->left和p->right分别表示结点的左、右孩子的指针域。
void fromtreetolist(p,l)
/*p,h是指向二叉树中结点的指针,*/
/*l是指向双向循环链表表头结点的指针*/
{if (p!=NULL)
{ fromtreetolist(p->left,l);
fromtreetolist(p-> right,l);
h=l;
while (h->right!=l)&&(h->right->key
p->right=h->right;
p->left=h;
();
h->rihght=p;
}
}
void buildlisttree(root,l)
/*root是指向二叉树根结点的指针,*/
/*l是指向双向循环链表表头结点的指针*/
{l=(struct nodetype *)malloc(sizeof(struct nodetype));
l->left=l;
l->right=l;
fromtreetolist(root,l);
}