广工数据结构参考答案全(anyview)分析
广工数据结构anyview 80道上机题
1.
void Descend(int &x, int &y, int &z)
/* 按从大到小顺序返回x,y和z的值*/ {
int t;
if(x { t=z; z=x; x=t; } if(y { t=y; y=z; z=t; } if(y>x) { t=x; x=y; y=t; } } 2. Status Fibonacci(int k, int m, int &f) /* 求k阶斐波那契序列的第m项的值f */ { int *a; int i=1; if(k<2||m<0) return ERROR; if(m { if(m==k-1) f=1; else f=0; return OK; } a=(int*)malloc((m+1)*sizeof(int)); for(i=0;i i=k+1; a[k-1]=1; a[k]=1; while(i<=m) { a[i]=2*a[i-1]-a[i-k-1]; i++; } f=a[m]; return OK; } 3. void Scores(ResultType *result, ScoreType *score) /* 求各校的男、女总分和团体总分, 并依次存入数组score */ /* 假设比赛结果已经储存在result[ ]数组中, */ /* 并以特殊记录{"", male, ' ', "", 0 }(域scorce=0)*/ /* 表示结束*/ { int i; for(i=0;result[i].score!=0;i++) { score[result[i].schoolname-'A'].totalscore+=result[i].score; if(result[i].gender==male) score[result[i].schoolname-'A'].malescore+=result[i].score; else score[result[i].schoolname-'A'].femalescore+=result[i].score; } } 4 Status Series(int ARRSIZE, int a[]) /* 求i!*2^i序列的值并依次存入长度为ARRSIZE的数组a;*/ /* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */ { int i=1,b=1,na=1; while(i<=ARRSIZE) { na*=i;b*=2; if(na*b>MAXINT) return OVERFLOW; a[i-1]=na*b; i++; if(i>ARRSIZE+1) return OVERFLOW; } return OK; } 5 float Polynomial(int n, int a[], float x) /* 求一元多项式的值P(x)。*/ /* 数组a的元素a[i]为i次项的系数,i=0,...,n */ { float ans=a[0],t=1.0; int i=1; while(i<=n) { t*=x; ans+=(t*a[i]); i++; } return ans; } 6 void InsertOrderList(SqList &L, ElemType x) // 在有序的顺序表L 中保序插入数据元素x { int i=L.length-1; while(L.elem[i]>x) { L.elem[i+1]=L.elem[i]; i--; } L.elem[i+1]=x; L.length++; } 7 char Compare(SqList A, SqList B) // 比较顺序表A和B, // 返回'<', 若A // '=', 若A=B; // '>', 若A>B { int i=0; while(A.elem[i]==B.elem[i]&&i if(i==A.length&&i==B.length) return '='; if(A.elem[i]>B.elem[i]||i==B.length) return '>'; return '<'; } 8 LinkList Locate(LinkList &L, ElemType x) // If 'x' in the linked list whose head node is pointed // by 'L', then return pointer ha pointing node 'x', // otherwise return 'NULL' { LinkList p; p=L->next;//第一个元素 while(p->next!=NULL) { if(p->data==x) return p; p=p->next; } return NULL; } 9 int Length(LinkList L) // Return the length of the linked list // whose head node is pointed by 'L' { int i=0; while(L->next!=NULL) { i++; L=L->next; } return i; } 10 void Insert(LinkList &L, int i, ElemType b) { int j=1; if(i==0) return ; LinkList p,q; q=L; p=(LinkList)malloc(sizeof(LNode)); p->data=b; if(i==1) { p->next=L; L=p; } else { while(j { j++; q=q->next; } if(j p->next=q->next; q->next=p; } } 11 void Delete(LinkList &L, int i) { int j=1; LinkList p,q; p=L; if(i==0) return ; if(i==1) { L=L->next; return; } while(j { j++; p=p->next; if(p->next==NULL) return; } q=p; p=p->next; q->next=p->next; free(p); } 12 void Purge(LinkList &L) { LinkList cur,temp,del;//cur当前结点,temp遍历下一个结点,del删除结点cur=L->next; temp=cur->next; if(cur==NULL||temp==NULL) return;//空或者只有一个元素,返回 while(cur->next) { temp=cur->next; while(temp) { if(cur->data==temp->data) { del=temp; temp=temp->next;//temp指向下一个元素 cur->next=temp; //删除后连接 free(del); } else temp=temp->next; } cur=cur->next; } }//时间复杂度O(n*n) 13 void Inverse(SqList &L) { int i=0; ElemType t; while(i { t=L.elem[i]; L.elem[i]=L.elem[L.length-i-1]; L.elem[L.length-i-1]=t; i++; } } 14 void Inverse(LinkList &L) /* 对带头结点的单链表L实现就地逆置*/ { LinkList p,q,k; p=q=L->next; p=p->next; L->next->next=NULL; if(!p) return ; while(p) { k=q; q=p; p=p->next; q->next=k; } L->next=q; } 15 void Merge(LinkList ha, LinkList hb, LinkList &hc) /* 依题意,合并带头结点的单链表ha和hb为hc */ { LinkList pa,pb,pc; hc=ha; pc=hc; pa=ha->next; pb=hb->next; if(!pa) {hc=hb;return;} if(!pb) {hc=ha;return;} while(pa||pb) { pc->next=pa; if(!pb) {return;} pc=pc->next; pa=pa->next; pc->next=pb; if(!pa) {return;} pb=pb->next; pc=pc->next; } } 16 void Union(LinkList &lc, LinkList &la, LinkList &lb) { LinkList pa,pb,pc; pa=la->next;pb=lb->next; //合并 lc=pc=la; while(pa&&pb) { if(pa->data <= pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa ? pa : pb; pa=pb=lc->next; //逆置 pa=pa->next; lc->next->next=NULL; if(!pa) return ; while(pa) { pc=pb; pb=pa; pa=pa->next; pb->next=pc; } lc->next=pb; } 17 ElemType DeleteNode(LinkList s) /* 删除指针s所指结点的前驱结点,并返回被删结点的元素值*/ { LinkList p; ElemType a; p=s->next; while(p->next->next!=s) p=p->next; a=p->next->data; p->next=s; return a; } 18 void PerfectBiLink(BiLinkList &CL) { BiLinkList pre,net,t; pre=t=CL; net=t->next; while(net!=t) { net->prev=pre; pre=net; net=net->next; } t->prev=pre; } 19 void Split(LinkList &lc, LinkList &ld, LinkList &lo, LinkList ll) { LinkList itor,pc,pd,po; itor=ll->next; lc=(LinkList)malloc(sizeof(LNode));pc=lc; ld=(LinkList)malloc(sizeof(LNode));pd=ld; lo=(LinkList)malloc(sizeof(LNode));po=lo; while(itor) { if(itor->data>='a'&&itor->data<='z'||itor->data>='A'&&itor->data<='Z') { pc->next=itor; pc=itor; } else if(itor->data<='9'&&itor->data>='0') { pd->next=itor; pd=itor; } else { po->next=itor; po=itor; } itor=itor->next; } pc->next=lc; pd->next=ld; po->next=lo; } 20 void ReverseEven(BiLinkList &L) { BiLinkList p1,p2; p1=L->next;p2=L; while(p1->next!=L) { if(p1->next->next!=L) { p1->next=p1->next->next;//接隔一个 p1=p1->next;//去到隔一个处 p2->prev=p1->prev;//p2的前驱为p1前驱 p1->prev=p1->prev->prev; p2->prev->next=p2;//p1的前驱的后继为p2 p2=p2->prev;//p2去到p2前驱 } else { p2->prev=p1->next; p1->next->next=p2; p2=p2->prev; break; } } p1->next=p2; p2->prev=p1; } 21 float Evaluate(SqPoly pn, float x) /* pn.data[i].coef 存放ai,*/ /* pn.data[i].exp存放ei (i=1,2,...,m) */ /* 本算法计算并返回多项式的值。不判别溢出。*/ /* 入口时要求0≤e1 int i,j; float ans=0.0,s; for(i=0;i { s=1; for(j=0;j ans+=pn.data[i].coef*s; } return ans; } //O(n*n) 22 void Difference(LinkedPoly &pa) /* 稀疏多项式pa 以循环链表作存储结构,*/ /* 将此链表修改成它的导函数,并释放无用结点*/ { PolyLink p; p=pa->next; while(p!=pa) { if(p->exp==0) { pa->next=p->next; free(p); p=pa->next; } else { p->coef *= p->exp; p->exp--; p=p->next; } } } 23 Status match(char *str) /* 若str是属该模式的字符序列,*/ /* 则返回TRUE,否则返回FALSE */ { Stack s; InitStack(s); SElemType e; int i=0; while(str[i]!='&') { Push(s,str[i]); i++; } i++; while(str[i]!='@') { GetTop(s,e); if(StackEmpty(s)||e!=str[i]) return FALSE; Pop(s,e); i++; } if(!StackEmpty(s)) return FALSE; return TRUE; } 24 Status MatchCheck(SqList exp) /* 顺序表exp表示表达式;*/ /* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ /* 注:本函数不使用栈*/ { int i=0,count=0; while(i { if(exp.elem[i]=='(') count++; if(exp.elem[i]==')') count--; if(count<0) return FALSE; i++; } if(!count) return TRUE; return FALSE; } 25 Status MatchCheck(SqList exp) /* 顺序表exp表示表达式;*/ /* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ { int i=0; Stack s; SElemType e; InitStack(s); while(i { if(exp.elem[i]=='('||exp.elem[i]=='['||exp.elem[i]=='{') Push(s,exp.elem[i]); else if(exp.elem[i]==')'||exp.elem[i]==']'||exp.elem[i]=='}') { if(StackEmpty(s)) return FALSE; else { GetTop(s,e); switch(exp.elem[i]) { case ')': if(e=='(') {Pop(s,e); break;} else return FALSE; case ']': if(e=='[') {Pop(s,e); break;} else return FALSE; case '}': if(e=='{') {Pop(s,e); break;} else return FALSE; default: break; } } } i++; } if(StackEmpty(s)) return TRUE; return FALSE; } 26 void ChangeColor(GTYPE g, int m, int n, char c, int i0, int j0) /* 在g[1..m][1..n]中,将元素g[i0][j0] */ /* 所在的同色区域的颜色置换为颜色c */ { char color=g[i0][j0]; g[i0][j0]=c; int dx[4]={-1,+1,0,0},dy[4]={0,0,-1,+1},i; for(i=0;i<4;i++) { if(i0+dx[i]<=m&&j0+dy[i]<=n&&j0+dy[i]>=1&&i0+dx[i]>=1&&g[i0+dx[i]][j0+dy[i]]==color) ChangeColor(g,m,n,c,i0+dx[i],j0+dy[i]); } } 27 char *RPExpression(char *e) /* 返回表达式e的逆波兰式*/ { int i,j=0; char *str; str=(char*)malloc(30*sizeof(char)); SElemType e1; Stack so; for(i=0;e[i]!='\0';i++) { if(e[i]<='9'&&e[i]>='0'||e[i]>='a'&&e[i]<='z'||e[i]>='A'&&e[i]<='Z')//入数字栈 { str[j++]=e[i]; } else { if(e[i]=='('||e[i]=='['||StackEmpty(so))//入栈 Push(so,e[i]); else if(e[i]==')') { while(Top(so)!='(')//将()内的操作符做运算 { str[j++]=Top(so);//操作符入栈 Pop(so,e1); } Pop(so,e1); } else if(e[i]==']') /********** 【习题】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。例如,由给定字符序列?慜敲求得逆序列?敜慲;由?瑜浩履 求得?敜業屴。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i /********** 【习题5.002】编写程序,利用while语句在同一行中 逐个显示从1至5的数字,每个数字之前保留2个空格。**********/ void main() { int i=1; while(i<=5) { printf(" %d",i); i++; } } /********** 【习题5.003】编写程序,利用for语句在同一行中逐个 显示从1至6的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=6;i++) printf(" %d",i); } /********** 【习题5.004】n是系统给定的外部整型变量(不需要 自行定义)。编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格。**********/ void main() { for(int i=1;i<=n;i++) printf(" %d",i) ; } /********** 【习题5.012】请仅在程序空缺处填入合适内容,使其 实现功能:依次输入5个整数,计算它们之和并输出。**********/ #include { scanf("%d",&n); sum=sum+n; } printf("sum = %d",sum); } /********** 【习题5.020】n和s是系统给定的外部整型变量(不需要 自行定义)。编写程序,求1到n之间的整数之和,并将结果存放到s。 **********/ void main() { for(int i=1;i<=n;i++) s+=i; } /********** 【习题5.022】n是系统给定的外部变量。编写程序, 求1到n间的自然数之和。请定义局部变量s存放求和 的结果,并用下列语句输出结果 printf("1+2+...+n=%d\n",s); 【题目】若两棵二叉树T1和T2皆为空,或者皆不空且T1的左、右子树和T2的左、右子树分别相似,则称二叉树T1和T2相似。试编写算法,判别给定两棵二叉树是否相似。 二叉链表类型定义: typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/ Status Similar(BiTree T1, BiTree T2) /* 判断两棵二叉树是否相似的递归算法*/ { if(!T1&&!T2)//同为空时,两树相似 return TRUE; else if(T1&&T1){ if(Similar(T1 -> lchild,T2 -> lchild) && Similar(T1 -> rchild,T2 -> rchild)) //两树都不为空时,判断左右子树是否相似 return TRUE; else return FALSE; }else//以上两种情况都不符合,就直接返回FALSE return FALSE; } /********** 【题目】编写递归算法,求对二叉树T先序遍历时 第k个访问的结点的值。 二叉链表类型定义: typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/ TElemType PreOrder(BiTree T, int &k) { TElemType x='#'; if(T==NULL)return '#'; if(k==1)return T->data; if(T->lchild!=NULL) { k--; x=PreOrder(T->lchild,k); } if(T->rchild!=NULL&&x=='#') 广工Anyview试题答案-第五章 /********** 【习题5.002】编写程序,利用while语句在同一行中 逐个显示从1至5的数字,每个数字之前保留2个空格。 **********/ void main() { int i=1; while(i<=5) { printf(" %d",i); i++; } } /********** 【习题5.003】编写程序,利用for语句在同一行中逐个 显示从1至6的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=6;i++) printf(" %d",i); } /********** 【习题5.004】n是系统给定的外部整型变量(不需要 自行定义)。编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=n;i++) printf(" %d",i) ; } /********** 【习题5.012】请仅在程序空缺处填入合适内容, 使其 实现功能:依次输入5个整数,计算它们之和并输出。 **********/ #include /**********【习题】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。 例如,由给定字符序列s="are"求得逆序列t="era";由s="time" 求得t="emit"。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i /********** 【习题4.011】关系表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序判断用户输入的字符是否为'@',若是则显示:"输入正确"。**********/ #include printf("False!\n"); return 0; } /********** 【习题4.016】if语句的子句为复合语句 在以下程序空缺处填写合适内容,使得程序将输入到变量a和b的两个整数按照由大到小的顺序输出。**********/ #include 【习题6.033】系统给定外部整型数组a、整型变量n、max、min 和实型变量avg(不需要自行定义)。编写程序,求数组a中前n 个元素的最大值max、最小值min及平均值avg。 **********/ void main() { inti,sum=0; max=min=a[0]; for(i=0;i 【习题6.050】系统给定外部字符串s和整型数组c[26](不需要 自行定义)。编写程序,将字符串s中26个小写字母出现的次数 依次统计到数组c中。例如,当s=“abcijkabcdexyzuvwx”时, 数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1。 **********/ #include /********** 【题目】试写一算法,如果三个整数a,b和c的值 不是依次非递增的,则通过交换,令其为非递增。 ***********/ void Descend(int &a, int &b, int &c) /* 通过交换,令a >= b >= c */ { if(c<=b&&b<=a) return; else { if(a /********** 【题目】已知k阶裴波那契序列的定义为 f(0)=0, f(1)=0, ..., f(k-2)=0, f(k-1)=1; f(n)=f(n-1)+f(n-2)+...+f(n-k), n=k,k+1,... 试编写求k阶裴波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。 **********/ Status Fibonacci(int k, int m, int &f) /* 求k阶斐波那契序列的第m项的值f */ { if(k<=1||m<0) return ERROR; else if(m==k-1) f=1; else if(m==0) f=0; else { int i,j,sum; int *t; t=(int*)malloc(m*sizeof(int)); for(i=0;i<=k-2;i++) t[i]=0; t[k-1]=1; for(i=k;i<=m;i++) { sum=0; for(j=i-k;j<=i;j++) sum+=t[j]; t[i]=sum; } f=t[m]; } return OK; } /********** 【题目】试编写算法,计算i!×2^i的值并存入数组 a[0..n-1]的第i-1个分量中(i=1,2,…,n)。假设计 算机中允许的整数最大值为MAXINT,则当对某个k (1≤k≤n)使k!×2^k>MAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。 **********/ 全国2001年10月高等教育自学考试 水力学试题 课程代码:02444 第一部分选择题(共20分) 一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1.某流体的运动粘度v=3×10-6m2/s,密度ρ=800kg/m3,其动力粘度μ为( ) 图中相互之间可以列总流伯努利方程的断面是 断面和2-2断面 断面和3-3断面 断面和3-3断面 断面和4-4断面 3.如图所示,孔板上各孔口的大小形状相同,则各孔口的出流量是( ) >Q B =Q B A.z1 B.z2 C.z1+ z2 D.z1+ z2+h w 6.在已知通过流量Q、渠道底坡i、边坡系数m及粗糙系数n的条件下,计算梯形断面渠道尺寸的补充条件及设问不能是( ) A.给定水深h,求底宽b B.给定宽深比β,求水深h与底宽b C.给定最大允许流速[v]max,求水底h与底宽b D.给定水力坡度J,求水深h与底宽b 7.断面单位能量e随水深h的变化规律是( ) A.e存在极大值 B.e存在极小值 C.e随h增加而单调增加 D.e随h增加而单调减少 8.下列各型水面曲线中,表现为上凸型的水面曲线是( ) 型型型型 9.根据堰顶厚度与堰上水头的比值,堰可分为( ) A.宽顶堰、实用堰和薄壁堰 B.自由溢流堰、淹没溢流堰和侧收缩堰 C.三角堰、梯形堰和矩形堰 D.溢流堰、曲线型实用堰和折线型实用堰 10.速度v、长度l、运动粘度v的无量纲组合是( ) A.vl v 2 B. v l v 2 C. v l v 22 D. vl v 第二部分非选择题(共80分) 二、填空题(本大题共10空,每空1分,共10分) 不写解答过程,将正确的答案写在每小题的空格内。错填或不填均分无。 11.潜体所受浮力的大小与其所在液体的______成正比。 /********** 【习题7.067】编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。 例如:轮转前的数组轮转后的数组 1 2 3 4 1 2 4 5 6 ---> 7 5 3 7 8 9 8 9 6 **********/ voidturningClockwise(char a[N][N]) { int i; int flog=1; int t=a[0][N-1]; for(i=N-1;i>0;i--) a[0][i]=a[0][i-1]; for(i=0;i 例如,16元可有6种支付方法: 方法 1 2 3 4 5 6 10元0 0 0 0 1 1 5元0 1 2 3 0 1 1元16 11 6 1 6 1 **********/ int change(int n) { inti,j,k; int m=0; for(i=0;i<=n;i++) for(j=0;j<=n/5;j++) for(k=0;k<=n/10;k++) if(i+j*5+k*10==n) m++; return m; } /********** 【习题7.030】先编写一个判断素数的函数。再编写一个函数 将一个偶数表示为两个素数之和,并返回其中较小的素数。 注:素数指只能被1和自身整除的正整数。规定0,1不是素数。**********/ int prime(int n) /* 判断素数,如果是素数返回1,不是素数则返回0 */ { int k; if(n==0||n==1) return 0; for (k=2;k<(n/2);k++) if(n%k==0) return 0; return 1; } int f(int i) /* 将偶数i表示为两个素数之和,返回其中较小的素数*/ { int n; for(n=3;n<=i;n++) if(prime(i-n)&&prime(n)) return n; } 广工数据结构anyview 80道上机题 1. void Descend(int &x, int &y, int &z) /* 按从大到小顺序返回x,y和z的值*/ { int t; if(x a[k-1]=1; a[k]=1; while(i<=m) { a[i]=2*a[i-1]-a[i-k-1]; i++; } f=a[m]; return OK; } 3. void Scores(ResultType *result, ScoreType *score) /* 求各校的男、女总分和团体总分, 并依次存入数组score */ /* 假设比赛结果已经储存在result[ ]数组中, */ /* 并以特殊记录{"", male, ' ', "", 0 }(域scorce=0)*/ /* 表示结束*/ { int i; for(i=0;result[i].score!=0;i++) { score[result[i].schoolname-'A'].totalscore+=result[i].score; if(result[i].gender==male) score[result[i].schoolname-'A'].malescore+=result[i].score; else score[result[i].schoolname-'A'].femalescore+=result[i].score; } } 4 Status Series(int ARRSIZE, int a[]) /* 求i!*2^i序列的值并依次存入长度为ARRSIZE的数组a;*/ /* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */ { int i=1,b=1,na=1; while(i<=ARRSIZE) { na*=i;b*=2; if(na*b>MAXINT) return OVERFLOW; a[i-1]=na*b; i++; if(i>ARRSIZE+1) return OVERFLOW; } return OK; } 5 数据结构设计性实验报告 课程名称数据结构实验 题目名称B树(难度1.4) 学生学院计算机学院 专业班级 学号 姓名 指导教师黄剑锋 2015年 06月25日 B树抽象数据类型实现 一、设计简介 本次设计在AnyviewCL自由编程平台上实现了B树的6种基本操作,并根据这个基本操作设计了友好的交际界面,操作简单易懂,并在AnyviewCL自由编程平台上可视化测试B树各个基本操作,保证了各基本的操作算法的正确性。 经在AnyviewCL自由编程平台严格测试后,将本设计移植到Visual C++ 6.0平台生成可运行程序,并进行各个基本操作的测试,保证了程序运行的稳定性。 其中数据来源为一组在0~1000内的int型随机数,但数据由typedefintKeyType定义,若需要改变数据类型,只需要将int替换成所需的数据类型即可。 二、抽象数据类型定义及各种基本操作的描述 ADT BTree{ 数据对象:D是具有相同特征的数据元素集合。 数据关系: 若D为空集,则称为空树; (1)树中每个结点最多含有m棵子树; (2)若根结点不是叶子结点,则至少有2个子树; (3)除根结点之外的所有非终端结点至少有┌m/2┐棵子树; (4)每个非终端结点中包含信息:(n,A0,K1,A1,K2,A2,…,Kn,An)。其中:1)Ki(1<=i<=n)为关键字,且关键字按升序排序; 2)指针Ai(0<=i<=n)指向子树的根结点,Ai-1指向子树中所有结点的关键字均小于Ki,且大于Ki-1; 3)关键字的个数n必须满足:┌m/2┐-1<=n<=m-1。 (5)所有的叶子节点都在同一层,子叶结点不包含任何信息。 基本操作P: CreatBTree(&T, n, m); 初始条件:初始化关键字个数n大于等于0,B树的阶数m大于3小于等于20。 操作结果:构建一棵阶数为m,含有n个关键字的B树。 SearchBTree(T, k, &p); /********** 【习题9.023】结构体类型定义如下: struct date{int year; int month; int day;}; //定义日期结构体类型 struct student { char name[20]; struct date birth; //出生日期 }; 结构体数组s存储了n个人的名字和出生日期。写一函数,求这n个人中年龄最大(即出生日期最小)者的姓名。 **********/ char *oldest(student s[], int n) { int j,k=0; for(j=1;j 广工A n y v i e w试题答 案 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】 /********** 【习题8.011】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。 例如,由给定字符序列s="are"求得逆序列t="era";由s="time" 求得t="emit"。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i广工Anyview试题答案第八章
广工Anyview试题答案第五章
2016最新广工anyview数据结构答案
广工Anyview试题答案-第五章
广工Anyview试题答案第八章
广工Anyview试题答案 第四章
2016广工Anyview试题答案-第六章
广工AnyView数据结构第15章答案
广工水力学试题
广工Anyview试题答案 第七章
广工数据结构参考答案全(anyview)分析
广工数据结构实验设计报告BTree
广工Anyview试题答案
广工Anyview试题答案