注意:此页面搜索的是所有试题
华北水利水电大学-计算机软件技术基础
假定一个线性表为(38,52,25,74,68,16,30,54,90,72)按线性表中元素的字母次序填写生成的一棵二叉排序树,求出其平均查找长度。
已知一个顺序存储的有序表为(15,26,34,39,45,56,58,63,74,6),试画出对应的二分查找判定树,求出其平均查找长度。
void AA(sqlist &L)/*L为一个顺序表*/ {initiate_sqlist(L);/*初始化顺序表L*/ end_insert(L,30);/*把三十个元素插入到表尾*/ begin_insert(L,50)/*把五十个元素插入到表头*/ int a[4]={5,8,12,15}; int i; for(i=0;i<=4;i++) end_insert(L,a[i]);/*依次把每个元素插入到表尾*/ for(i=0;i<=4;i++) begin_insert(L,a[i]);/*依次把每个元素插入到表头*/ } 该算法被调用执行后,得到的顺序表L为:__。
指出下列每个算法的功能并求出其时间复杂性。 (1)int sum1(int n) { int p=1,s=0; for(int i=1;i<=n;i++) { p*=i; s+=p; } return s; } (2) void mtable(int n) {for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) printf(“i*j=%d ”,i*j); printf(“\n”); } (3)void cmatrix(int a[M][N],int d) /*M和N为全局整型常量*/ { for(int i=0;i) for(int j=0;j) a[i][j]*=d; }
斐波那契(Fibonacci)数列的定义为:它的第一项和第二项均为1,以后各项为前两项之和。若斐波那契数列中第n项用Fib(n)表示,则计算公式为: 试根据下面程序填写出计算Fib(n)的递归算法和非递归算法。 递归算法如下: int Fib(int n) {if (n==1||n==2) 1; /*终止递归条件*/ return Fib(n-1)+ Fib(n-2));} 非递归算法如下: int Fib1(int n) { a,b,c;/*c代表当前项,a和b分别代表当前项前面的第二项和第一项*/ a=b= ; (n==1||n==2) return 1; else for(int i=3;i<=n;i++) {c= ; /*求出当前项*/ a= ; /*把前面第一项赋给前面第二项*/ b= ; /*把当前项赋给前面第一项*/ } return c; /*返回所求的第n项*/ }
介绍递归算法的思想,并在下面的程序基础上设计一个递归算法,计算出返回1至n之间的所有整数平方和。 SquareSum(int n) { (n==0) 0; return n*n+Square( ); }
根据下面的程序分填写在顺序表和带头结点的单链表上统计出值为x的元素个数的算法,统计结果由函数值返回。 /* 从顺序表上统计出值为x的元素个数的算法*/ int Count(sqlist &L,datatype x) { i=0,j; (j=0;j.last;j++) (L.data[i]==x)i++; return i; } /*从单链表上统计出值为x的元素个数的算法*/ int Count(lklist &HL,datatype x) {node =HL.Head—>next; int i= 0; while(p!= ) {if(p—>data==x)i++; =p—>next; } return; }
分别在下面的程序基础上编写在顺序表和带头结点的单链表上删除其值等于x的所有元素。 /*从顺序表中删除具有给定值x的所有元素*/ void Deletel(sqlist &L.datatype x) { i,j=0; (i.last) {if (L.data[i]==x) /*删除下标为i的元素*/ {for(j=i+1;j.last;j++) L.data[j-1]= ;L.last——; } else ; } } /*从单链表中删除具有给定值的x的所有元素*/ void Deletel(lklist &HL,datatype x) {node *p=HL.head; node *q; (p—>next!=NULL) { =p—>next; if (q—>data==x)/*删除p的后继结点,即q结点*/ {p—>next=q—>next; q; } p=p—>next; } } 您的答案:
某学校一年级有n个级,每班有m名学生。在下,在下面程序的基础上编制C语言程序,从键盘输入每个学生1门课的成绩,计算并输出年级最高分及全体学生的平均分。 #include< >(1分) main()(1分) { i,j,n,m; (1分) fc,max=0,av,sum=0; (1分) scanf("%d,%d",&n,&m); (1分) (i=1;i<=n;i++)(2分) for(j=1;j<=m;j++)(2分) { scanf("%f",&fc); sum+= ; if(max fc)max=fc; } av=sum/(n*m); (1分) ("%f,%f",max,av); }
viod AC(lklist &HL)/*HL为一个单链表*/ {initiate_lklist(HL);/*初始化单链表HL*/ insert_lklist(HL,30,1);/*向单链表第一个位置插入元素30*/ insert_lklist(HL,50,2);/*向单链表第二个位置插入元素50*/ int a[5]={15,8,9,26,12}; for(inti=0;i<5;i++)begin_insert(HL,a[i]); /*向HL的表头依次插入数组a中的前五个元素值*/ int x=delete_lklist(HL,3); /*此函数删除HL中的第三个结点并返回该结点的值*/ end_lklist(HL,x);/*向HL的表尾插入x*/ } 该算法被调用执行后,单链表的长度为 ,得到的HL单链表所对应的线性表为: