阅读下列函数说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
typedef struct Tnode{
int data;
struct Tnode *Lchild,*Rchild;
}*Bitree;
在二叉查找树上删除一个结点时,要考虑三种情况:
1若待删除的结点p是叶子结点,则直接删除该结点;
2若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;
3若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述1、2情况之一。
B.itreep = *r, pp, s, c;
while( (1) ) { /*从树根结点出发查找键值为e的结点*/
pp = p;
if ( e< p->data) p = p -> Lchild;
else p = p->Rchild;
}
if(!p) return –1; /* 查找失败 */
if(p->Lchild && p->Rchild) { /* 处理情况3 */
s = (2);pp = p;
while ( (3) ) { pp = s; s = s-> Rchild; }
p->data = s ->data; p = s;
}
/*处理情况1、2*/
if( (4) ) c = p -> Lchild;
elsec = p -> Rchild;
if(p == *r) *r = c;
elseif ( (5) ) pp -> Lchild = c;
elsepp->Rchild = c;
free(p);
return 0;
}
[试题]试题二阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(函数2.1说明)函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:"LEVEL"是回文字符串,而"LEVAL"不是。(函数2.1)int palindrome(char s[]){char*pi,*pj;pi=s;pj=s+strlen(s)-1;while(pi<pj &&
[试题]试题三阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为typedef struct node
[试题]试题三阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(函数3说明)函数DeleteNode(Bitree*r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:typedef struct Tnode{int data;/*结点的键值*/struct Tnode*Lchild,*Rchild;/*指向左、右子树的指针*/}*Bitree;在二叉查找树上删除一个结点时,要考
[试题]试题四阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。(函数)void QuickSort(int A[],int s,int t){int i=s,j=t+1,temp;int x=A[s];do{do i++;while (1) ;do j--;while(A[j]>x);if(i<j){temp=A[i]; (2) ; (3) ;}}while(i<j);A.[a]=A[j];
[试题]试题四阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明4.1)假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:typedef struct{D.ateType data [MaxSize];int front[2],rear[2];}Queue2;对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数EnQueue(Queue2*Q,int i,DateType x)的功能是实现第i个队列的入队操作。(函数
[试题]试题二阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明2.1)以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。(函数2.1)void fun1(int a[]){int i,j,k,r,x,m;for(i=2;i<=n;i++){ (1) ;k=1;r=i-1;while(k<=r){m=(k+r)/2;if(x<a[m])r=m-1;else (2) ;}for(j=i-1;j>=k;j--)a[j+1]=a[j];(3) ;}}
[试题]试题三阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。(函
[试题]试题八阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。(程序)#include<stdio.h>main(){FILE*fp;charstr[100];inti=0;if((fp=fopen("text.txt" (1) ))==NULL){printf("can't open this file.\n"
[试题]试题二阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数print(BinTreeNode*t;DateType &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。因为退栈时需要区分右子树。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。(函数)void print(BinTreeNode*t;DateType &x){stack ST;int i,top;
[试题]试题三阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1,并且不是L2中的整数,还要求L3中的所有整数都两两不等。(函数)#include<malloC.h>typedef struct node{int d;struct node *next}Node;void diff(Node *A,Node