首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。sq->height( )
查看本题答案
包含此试题的试卷
初级程序员《填空》真题及答案
点击查看
你可能感兴趣的试题
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无tr.height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无tr->perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sq->perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh->perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无tr->perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无tr.height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无tr.perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh->height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh->height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sq->height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无tr->height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh.perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sq.perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh.height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sq->perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh.height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh.perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sh->perimeter
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sq.height
写出下面消息对应的方法编号如果该消息错误或者没有对应的方法调用请填写无sq.perimeter
热门试题
更多
与单向链表相比双向链表______
对于n个元素的关键字序列{k1k2kn}若将其按次序对应到一棵具有n个节点的完全二叉树上使得任意节点都不大于其孩子节点若存在孩子节点则称其为小顶堆根据以上定义______是小顶堆
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 对角线下元素全为0的矩阵称为上三角矩阵设对于一个n×n的上三角矩阵a为节约存贮只将它的上三角元素按行主序连续存放在数组b中下面的函数trans在不引入工作数组的情况下实现将a改为按列主序连续存放在数组b中 设n=5 b=123456789101112131415 经调用trans函数后b变为 b=126371048111359121415 函数tans对数组元素的存贮位置作调整调整过程中存在若干个循环传送链 bi1→bi2→bij→bi11≤j<n 例如考察调整后的数组元素b2值为6与该元素相关的位置调整将形成下面的循环传送链 b2→b3→b6→→b12→b9→b5→b2 关键是确定循环传送链的下标i1i2ij以及在考察调整后的元素bkk34时能判定bk是已被传送过的某传送链上的元素 函数ctrkn计算调整后的数组b的第k个元素bk在原数组b中的位置该位置作为函数ctrkn的返回值函数ctr根据k确定它在矩阵中的行号i和列号j注意行号和列号均从 0算起然后按矩阵存放原则计算出它在b中的位置【程序】 transbnintnb[]{ intmkrccrrintw m=n+1*n/2-4k=2 whilem>0{ r=ctrkn ifr==km-- else { cc=krr=rwhile 1 { cc=rrrr=ctrccn }if 2 { cc=krr=rw=b[k] while3 { b[cc]=b[rr]m-- cc=rrrr=ctfccn } b[cc]-w4 } }k++ }}ctrkn intkn{intij i=kj=0while5 i-=++j returni*n+j-i*i+1/2}
阅读以下说明和C代码将应填入n处的字句写在对应栏内 【说明】 在一图像处理系统中开发者定义了一个图像结构ImageCon其中定义了图像应该具有的属性当图像件的内容或状态发生变化时与之相关联的ImageView结构的值都需要发生改变一个ImageCon结构能够关联一组ImageView结构当ImageCon结构的内容或状态发生变化时所有与之相关联的ImageView结构都将被更新这种应用被称为观察者模式以下代码采用C语言实现能够正确编译通过 【C代码】#include<stdio.h>#define OBS_MAXNUM20/*一个ImageCon变量最多能够关联的ImageView变量的个数*/typedefvoid 1strucImageCon*structImageView* structImageView{funcupdate /*ImageView结构采用的更新函数*/ /*其他的结构字段省略*/} structImageCon{2 myObs[OBS_MAXNUM] /*存储所有与ImageCon相关联的ImageView结构指针*/intindex /*与ImageCon结构变量相关联的ImageView结构变量的个数*/}void attachstructImageCon*IMGstructImageView*ob{ /*关联Obersver结构ob与ImageCon结构IMG*/int loop=0 ifIMG→index>=OBS_MAXNUM||ob==NULLreturn forloop=0loop<IMG→indexloop++ ifIMG→myObs[loop]==obreturn IMG→myObs[IMG→index]=ob IMG→index++}voiddetachstructImageCon *IMGstructImageView*ob{ /*解除IMG结构与ob结构间的关系*/intloop ifob==NULLreturn forloop=0loop<IMG→indexloop++{ ifIMG→myObs[loop]==ob{ ifloop<=IMG→index-2 IMG→myObs[loop]=IMG→myObs[3] IMG→myObs[IMG→index-1]=NULL IMG→index-- breack }} }voidupdatelstructImageCon*IMGstructImageView *ob{/*更新ob结构的值更新代码省略*/}void update2structImageCon*IMGstructImageView*ob{ /*更新ob结构的值更新代码省略*/}void notifyObsstructImageCon*IMG{ /*当IMG结构的值发生变化时通知与之关联的所有ImageView结构变量*/int loopforloop=0loop<IMG→indexloop++{ IMG→myObs[loop]→update4 }} voidmain{structImageCon IMG/*定义一ImageCon变量*/structImageView explorer1explorer2/*定义两个ImageView变量*/ /*初始化与ImageCon变量相关的ImageView变量个数为0*/ IMG.index=0 explorer1.update=updatel/*设置explorerl变量的更新函数*/ explorer2.update=update2/*设置explorer2变量的更新函数*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ /*其他代码省略*/5 return}
阅读以下说明和C代码将应填入n处的字句写在对应栏内 【说明】 在一图像处理系统中开发者定义了一个图像结构ImageCon其中定义了图像应该具有的属性当图像件的内容或状态发生变化时与之相关联的ImageView结构的值都需要发生改变一个ImageCon结构能够关联一组ImageView结构当ImageCon结构的内容或状态发生变化时所有与之相关联的ImageView结构都将被更新这种应用被称为观察者模式以下代码采用C语言实现能够正确编译通过 【C代码】#include<stdio.h>#define OBS_MAXNUM20/*一个ImageCon变量最多能够关联的ImageView变量的个数*/typedefvoid 1strucImageCon*structImageView* structImageView{funcupdate /*ImageView结构采用的更新函数*/ /*其他的结构字段省略*/} structImageCon{2 myObs[OBS_MAXNUM] /*存储所有与ImageCon相关联的ImageView结构指针*/intindex /*与ImageCon结构变量相关联的ImageView结构变量的个数*/}void attachstructImageCon*IMGstructImageView*ob{ /*关联Obersver结构ob与ImageCon结构IMG*/int loop=0 ifIMG→index>=OBS_MAXNUM||ob==NULLreturn forloop=0loop<IMG→indexloop++ ifIMG→myObs[loop]==obreturn IMG→myObs[IMG→index]=ob IMG→index++}voiddetachstructImageCon *IMGstructImageView*ob{ /*解除IMG结构与ob结构间的关系*/intloop ifob==NULLreturn forloop=0loop<IMG→indexloop++{ ifIMG→myObs[loop]==ob{ ifloop<=IMG→index-2 IMG→myObs[loop]=IMG→myObs[3] IMG→myObs[IMG→index-1]=NULL IMG→index-- breack }} }voidupdatelstructImageCon*IMGstructImageView *ob{/*更新ob结构的值更新代码省略*/}void update2structImageCon*IMGstructImageView*ob{ /*更新ob结构的值更新代码省略*/}void notifyObsstructImageCon*IMG{ /*当IMG结构的值发生变化时通知与之关联的所有ImageView结构变量*/int loopforloop=0loop<IMG→indexloop++{ IMG→myObs[loop]→update4 }} voidmain{structImageCon IMG/*定义一ImageCon变量*/structImageView explorer1explorer2/*定义两个ImageView变量*/ /*初始化与ImageCon变量相关的ImageView变量个数为0*/ IMG.index=0 explorer1.update=updatel/*设置explorerl变量的更新函数*/ explorer2.update=update2/*设置explorer2变量的更新函数*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ /*其他代码省略*/5 return}
由关键字序列1273625182构造一棵二叉排序树初始为空第一个关键字作为根节点插入此后对于任意关键字若小于根节点的关键字则插入左子树中若大于根节点的关键字则插入右子树中且左右子树均为二叉排序树该二叉排序树的高度层数为______
若字符串s的长度为nn>1且其中的字符互不相同则s的长度为2的子串有______个
n个元素依次全部进入栈后再陆续出栈并经过一个队列输出那么______
对连通图进行遍历前设置所有顶点的访问标志为false未被访问遍历图后得到一个遍历序列初始状态为空深度优先遍历的含义是从图中某个未被访问的顶点v出发开始遍历先访问v并设置其访问标志为true已访问同时将v加入遍历序列再从v的未被访问的邻接顶点中选一个顶点进行深度优先遍历若v的所有邻接点都已访问则回到v在遍历序列的直接前驱顶点再进行深度优先遍历直至图中所有顶点被访问过______是图8-19的深度优先遍历序列
若将图8-23a所示的无向图改为完全图则还需要增加24 条边图b的邻接矩阵表示为25行列均以ABCDE为序
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 对角线下元素全为0的矩阵称为上三角矩阵设对于一个n×n的上三角矩阵a为节约存贮只将它的上三角元素按行主序连续存放在数组b中下面的函数trans在不引入工作数组的情况下实现将a改为按列主序连续存放在数组b中 设n=5 b=123456789101112131415 经调用trans函数后b变为 b=126371048111359121415 函数tans对数组元素的存贮位置作调整调整过程中存在若干个循环传送链 bi1→bi2→bij→bi11≤j<n 例如考察调整后的数组元素b2值为6与该元素相关的位置调整将形成下面的循环传送链 b2→b3→b6→→b12→b9→b5→b2 关键是确定循环传送链的下标i1i2ij以及在考察调整后的元素bkk34时能判定bk是已被传送过的某传送链上的元素 函数ctrkn计算调整后的数组b的第k个元素bk在原数组b中的位置该位置作为函数ctrkn的返回值函数ctr根据k确定它在矩阵中的行号i和列号j注意行号和列号均从 0算起然后按矩阵存放原则计算出它在b中的位置【程序】 transbnintnb[]{ intmkrccrrintw m=n+1*n/2-4k=2 whilem>0{ r=ctrkn ifr==km-- else { cc=krr=rwhile 1 { cc=rrrr=ctrccn }if 2 { cc=krr=rw=b[k] while3 { b[cc]=b[rr]m-- cc=rrrr=ctfccn } b[cc]-w4 } }k++ }}ctrkn intkn{intij i=kj=0while5 i-=++j returni*n+j-i*i+1/2}
线性表采用顺序存储结构若表长为m且在任何一个合法插入位置上进行插入操作的概率相同则插入一个元素平均移动______个元素
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 已知某二叉树的前序遍历和中序遍历序列可以得到该二叉树的结构本程序实现了根据这两个遍历序列生成一棵链接表示的二叉树 构造二叉树的算法要点是由前序遍历序列该序列的第一个元素是根结点元素该元素将中序遍历序列分成左右两部分那些位于该元素之前的元素是它的左子树上的元素位于该元素之后的元素是它的右子树上的元素对于左右子树由它们的前序遍历序列的第一个元素可确定左右子树的根结点参照中序遍历序列又可进一步确定子树的左右子树元素如此递归地参照两个遍历序列最终构造出二叉树 两个遍历序列作为主函数main的参数为简单起见程序假定两个遍历序列是相容的主函数调用函数restore建立二叉树函数restore以树子树的前序遍历和中序遍历两序列及序列长为参数采用递归方法建立树子树函数postorder实现二叉树的后序遍历序列输出用来验证函数restore建立的二叉树 【程序】#includestdio.h> #include<stdlib.h>#defineMAX100typedef structnode{chardata struetnode*llink*rlink}TNODE charpred[MAX]inod[MAX]TNODE*restore Char*char*intmainintargcChar**argv {TNODE*root ifargc<3exit0 strcpypredargv[1] strcpyinodargv[2] root=restorepredinodstrlenpredpostorderroot printf/n/n}TNODE* restoreChar*pposchar*iposintn{ /*参数包括前序遍历序列数组和中序遍历数组*/TNODE* ptrChar*rpos intkifn<=0returnNULL ptr=TNODE*mallocsizeofTNODE ptr→data=1 for2rpos=iposrpos<ipos+nrpos++ if*rpos==*pposbreak k=3 ptr→llink=restoreppos+14k ptr→rlink=restore5+krpos+ 1n-1-kreturnptr }postorderTNODE*ptr{ ifptr==NULLreturn postorderptr→llink postorderptr→rlink prinft%cptr→data}
满二叉树的特点是每层上的节点数都达到最大值因此对于高度为hh>1的满二叉树其节点总数为 18 对非空满二叉树由根节点开始按照先根后子树先左子树后右子树的次序从123依次编号则对于树中编号为i的非叶子节点其右子树的编号为 19高度为3的满二叉树如图8-20所示
阅读以下程序说明和C程序将应填入n处的字句写在对应栏内 【程序说明】 某网络由n个端点组成这些端点被物理地分成若干个分离的端点组同一组内的两件端点i和j它们或直接相连或间接相连端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列其中端点i和j分别与这相连序列中的某个端点直接相连网络的n个端点被统一编号为01n-1本程序输入所有直接相连的端点号对分别求出系统各分离端点组中的端点号并输出 程序根据输入的直接相连的两件端点号建立n个链表其中第i个链表的首指针为s[i]其结点是与端点i直接相连的所有端点号 程序依次处理各链表在处理s[i]链表中用top工作链表重新构造s[i]链表使s[i]链表对应系统中的一个端点组其中结点按端点号从小到大连接 【程序】#inelude#defineN100 typeefstructnode{intdata structnode*link}NODE NODE*s[N]intijntNODE *q*p*x*y*topmain{ printfEnternamberofcomponents. scanf%d&nfori=0i<ni++ printfEnterpairs./n whilescanf%d%d&i&j==2{ /*输入相连端点对生成相连端点结点链表*/ p=NODE*mallocsizeofNODE p→data=jp→link=s[i]s[i]=p p=NODE*mallocsizeofNODE p→data=ip→link=s[j]s[j]=p} fori=0i<ni++/*顺序处理各链表*/ fortop=s[i]1top!=NULL {/*将第i链表移入top工作链表并顺序处理工作链表的各结点*/ q=top 2 ifs¨[j=q→data]!=NULL{ /将j链表也移入工作链表*/ forp=s[j]p→link!=NULLp=p→link p→link=toptop=s[j] 3 } /*在重新生成的第i链表中寻找当前结点的插入点*/ fory=s[i]4x=yy=y→link ify!=NULL&&y→data==q→data freeq/*因重新生成的第i链表已有当前结点当前结点删除*/ else{ 5 ify==s[i]s[i]=q elsex→link=q }} fori=0i<ni++ {/*输出结果*/ ifs[i]==NULLcontinue forp=s[i]p!=NULL{ printf/t%dp→data q=p→linkfreepp=q }printf/n }}
阅读以下说明和C程序将应填入n处的字句写在对应栏内 【说明】 并行计算中需要将N个作业分配给N个处理器同时去完成每个处理器都能承担这N个作业但耗时不同下面的程序用回溯法计算总耗时最小的一种作业分配方案在该方案中为每个处理器分配1个不同的作业 程序中N个作业从0开始依次编号N个处理器也从0开始依次编号主要的变量说明如下 c[i][j]将作业i分配给处理器j的耗时 job[i]值为0表示作业i未分配值为j表示作业i分配给处理器j processor[k]值为0表示处理器k未分配作业值为1表示处理器k已分配作业 mincost最小总耗时【C程序】 #include<stdio.h>#defineN8/*N表示作业数和处理器数*/ intc[N][N]unsignedint mincost=65535/*设置min的初始值大于可能的总耗时*/int job[N]temp[N]processor[N]voidAssignintkunsignedint cost{inti if1&&cost<mincost{ mincost=cost fori=0i<Ni++temp[i]=job[i] }else{ fori=0i<Ni++/*分配作业k*/ if2&& cost+c[k][i]<mincost{ processor[i]=1job[k]=3 Assign4cost+c[k][i] 5job[k]=0 }/*if*/ }}/*Assign*/ voidmain{int ij fori=0i<Ni++{/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/ processor[i]=0job[i]=0temp[i]=0 forj=0j<Nj++ scanf%d&c[i][j]} Assign00/*从作业0开始分配*/ printf/n最小耗时=%d/nmincost fori=0i<Ni++printfJob%disassigned toProcessor%d/nitemp[i]}/*main*/
若一个栈以向量V[1..n]存储且空栈的栈顶指针top为n+1则将元素x入栈的正确操作是______
采用哈希或散列技术构造查找表时需要考虑冲突碰撞的处理冲突是指______
在执行递归过程时通常使用的数据结构是______
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 已知某二叉树的前序遍历和中序遍历序列可以得到该二叉树的结构本程序实现了根据这两个遍历序列生成一棵链接表示的二叉树 构造二叉树的算法要点是由前序遍历序列该序列的第一个元素是根结点元素该元素将中序遍历序列分成左右两部分那些位于该元素之前的元素是它的左子树上的元素位于该元素之后的元素是它的右子树上的元素对于左右子树由它们的前序遍历序列的第一个元素可确定左右子树的根结点参照中序遍历序列又可进一步确定子树的左右子树元素如此递归地参照两个遍历序列最终构造出二叉树 两个遍历序列作为主函数main的参数为简单起见程序假定两个遍历序列是相容的主函数调用函数restore建立二叉树函数restore以树子树的前序遍历和中序遍历两序列及序列长为参数采用递归方法建立树子树函数postorder实现二叉树的后序遍历序列输出用来验证函数restore建立的二叉树 【程序】#includestdio.h> #include<stdlib.h>#defineMAX100typedef structnode{chardata struetnode*llink*rlink}TNODE charpred[MAX]inod[MAX]TNODE*restore Char*char*intmainintargcChar**argv {TNODE*root ifargc<3exit0 strcpypredargv[1] strcpyinodargv[2] root=restorepredinodstrlenpredpostorderroot printf/n/n}TNODE* restoreChar*pposchar*iposintn{ /*参数包括前序遍历序列数组和中序遍历数组*/TNODE* ptrChar*rpos intkifn<=0returnNULL ptr=TNODE*mallocsizeofTNODE ptr→data=1 for2rpos=iposrpos<ipos+nrpos++ if*rpos==*pposbreak k=3 ptr→llink=restoreppos+14k ptr→rlink=restore5+krpos+ 1n-1-kreturnptr }postorderTNODE*ptr{ ifptr==NULLreturn postorderptr→llink postorderptr→rlink prinft%cptr→data}
数据结构中的树最适合用来表示______的情况
对具有n个元素的顺序表采用顺序存储的线性表进行______操作其耗时与n的大小无关
数组A[-5..50..8]按列存储若第一个元素的首地址为100且每个元素占用4个存储单元则元素A[23]的存储地址为______
阅读以下程序说明和C程序将应填入n处的字句写在对应栏内 【程序说明】 某网络由n个端点组成这些端点被物理地分成若干个分离的端点组同一组内的两件端点i和j它们或直接相连或间接相连端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列其中端点i和j分别与这相连序列中的某个端点直接相连网络的n个端点被统一编号为01n-1本程序输入所有直接相连的端点号对分别求出系统各分离端点组中的端点号并输出 程序根据输入的直接相连的两件端点号建立n个链表其中第i个链表的首指针为s[i]其结点是与端点i直接相连的所有端点号 程序依次处理各链表在处理s[i]链表中用top工作链表重新构造s[i]链表使s[i]链表对应系统中的一个端点组其中结点按端点号从小到大连接 【程序】#inelude#defineN100 typeefstructnode{intdata structnode*link}NODE NODE*s[N]intijntNODE *q*p*x*y*topmain{ printfEnternamberofcomponents. scanf%d&nfori=0i<ni++ printfEnterpairs./n whilescanf%d%d&i&j==2{ /*输入相连端点对生成相连端点结点链表*/ p=NODE*mallocsizeofNODE p→data=jp→link=s[i]s[i]=p p=NODE*mallocsizeofNODE p→data=ip→link=s[j]s[j]=p} fori=0i<ni++/*顺序处理各链表*/ fortop=s[i]1top!=NULL {/*将第i链表移入top工作链表并顺序处理工作链表的各结点*/ q=top 2 ifs¨[j=q→data]!=NULL{ /将j链表也移入工作链表*/ forp=s[j]p→link!=NULLp=p→link p→link=toptop=s[j] 3 } /*在重新生成的第i链表中寻找当前结点的插入点*/ fory=s[i]4x=yy=y→link ify!=NULL&&y→data==q→data freeq/*因重新生成的第i链表已有当前结点当前结点删除*/ else{ 5 ify==s[i]s[i]=q elsex→link=q }} fori=0i<ni++ {/*输出结果*/ ifs[i]==NULLcontinue forp=s[i]p!=NULL{ printf/t%dp→data q=p→linkfreepp=q }printf/n }}
若线性表241331615188采用散列Hash法进行存储和查找设散列函数为HKey=Keymod11则构造散列表时发生冲突的元素为______其中的mod表示整除取余运算
用二分法来检索数据最确切的说法是______
若二维数组P[1..50..8]的首地址为base数组元素按行存储且每个元素占用1个存储单元则元素P[33]在该数组空间的地址为______
阅读以下程序说明和C程序将应填入n处的字句写在对应栏内 【程序说明】 某网络由n个端点组成这些端点被物理地分成若干个分离的端点组同一组内的两件端点i和j它们或直接相连或间接相连端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列其中端点i和j分别与这相连序列中的某个端点直接相连网络的n个端点被统一编号为01n-1本程序输入所有直接相连的端点号对分别求出系统各分离端点组中的端点号并输出 程序根据输入的直接相连的两件端点号建立n个链表其中第i个链表的首指针为s[i]其结点是与端点i直接相连的所有端点号 程序依次处理各链表在处理s[i]链表中用top工作链表重新构造s[i]链表使s[i]链表对应系统中的一个端点组其中结点按端点号从小到大连接 【程序】#inelude#defineN100 typeefstructnode{intdata structnode*link}NODE NODE*s[N]intijntNODE *q*p*x*y*topmain{ printfEnternamberofcomponents. scanf%d&nfori=0i<ni++ printfEnterpairs./n whilescanf%d%d&i&j==2{ /*输入相连端点对生成相连端点结点链表*/ p=NODE*mallocsizeofNODE p→data=jp→link=s[i]s[i]=p p=NODE*mallocsizeofNODE p→data=ip→link=s[j]s[j]=p} fori=0i<ni++/*顺序处理各链表*/ fortop=s[i]1top!=NULL {/*将第i链表移入top工作链表并顺序处理工作链表的各结点*/ q=top 2 ifs¨[j=q→data]!=NULL{ /将j链表也移入工作链表*/ forp=s[j]p→link!=NULLp=p→link p→link=toptop=s[j] 3 } /*在重新生成的第i链表中寻找当前结点的插入点*/ fory=s[i]4x=yy=y→link ify!=NULL&&y→data==q→data freeq/*因重新生成的第i链表已有当前结点当前结点删除*/ else{ 5 ify==s[i]s[i]=q elsex→link=q }} fori=0i<ni++ {/*输出结果*/ ifs[i]==NULLcontinue forp=s[i]p!=NULL{ printf/t%dp→data q=p→linkfreepp=q }printf/n }}
阅读以下说明和C程序将应填入n处的字句写在对应栏内 【说明】 并行计算中需要将N个作业分配给N个处理器同时去完成每个处理器都能承担这N个作业但耗时不同下面的程序用回溯法计算总耗时最小的一种作业分配方案在该方案中为每个处理器分配1个不同的作业 程序中N个作业从0开始依次编号N个处理器也从0开始依次编号主要的变量说明如下 c[i][j]将作业i分配给处理器j的耗时 job[i]值为0表示作业i未分配值为j表示作业i分配给处理器j processor[k]值为0表示处理器k未分配作业值为1表示处理器k已分配作业 mincost最小总耗时【C程序】 #include<stdio.h>#defineN8/*N表示作业数和处理器数*/ intc[N][N]unsignedint mincost=65535/*设置min的初始值大于可能的总耗时*/int job[N]temp[N]processor[N]voidAssignintkunsignedint cost{inti if1&&cost<mincost{ mincost=cost fori=0i<Ni++temp[i]=job[i] }else{ fori=0i<Ni++/*分配作业k*/ if2&& cost+c[k][i]<mincost{ processor[i]=1job[k]=3 Assign4cost+c[k][i] 5job[k]=0 }/*if*/ }}/*Assign*/ voidmain{int ij fori=0i<Ni++{/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/ processor[i]=0job[i]=0temp[i]=0 forj=0j<Nj++ scanf%d&c[i][j]} Assign00/*从作业0开始分配*/ printf/n最小耗时=%d/nmincost fori=0i<Ni++printfJob%disassigned toProcessor%d/nitemp[i]}/*main*/
阅读以下说明和C代码将应填入n处的字句写在对应栏内 【说明】 在一图像处理系统中开发者定义了一个图像结构ImageCon其中定义了图像应该具有的属性当图像件的内容或状态发生变化时与之相关联的ImageView结构的值都需要发生改变一个ImageCon结构能够关联一组ImageView结构当ImageCon结构的内容或状态发生变化时所有与之相关联的ImageView结构都将被更新这种应用被称为观察者模式以下代码采用C语言实现能够正确编译通过 【C代码】#include<stdio.h>#define OBS_MAXNUM20/*一个ImageCon变量最多能够关联的ImageView变量的个数*/typedefvoid 1strucImageCon*structImageView* structImageView{funcupdate /*ImageView结构采用的更新函数*/ /*其他的结构字段省略*/} structImageCon{2 myObs[OBS_MAXNUM] /*存储所有与ImageCon相关联的ImageView结构指针*/intindex /*与ImageCon结构变量相关联的ImageView结构变量的个数*/}void attachstructImageCon*IMGstructImageView*ob{ /*关联Obersver结构ob与ImageCon结构IMG*/int loop=0 ifIMG→index>=OBS_MAXNUM||ob==NULLreturn forloop=0loop<IMG→indexloop++ ifIMG→myObs[loop]==obreturn IMG→myObs[IMG→index]=ob IMG→index++}voiddetachstructImageCon *IMGstructImageView*ob{ /*解除IMG结构与ob结构间的关系*/intloop ifob==NULLreturn forloop=0loop<IMG→indexloop++{ ifIMG→myObs[loop]==ob{ ifloop<=IMG→index-2 IMG→myObs[loop]=IMG→myObs[3] IMG→myObs[IMG→index-1]=NULL IMG→index-- breack }} }voidupdatelstructImageCon*IMGstructImageView *ob{/*更新ob结构的值更新代码省略*/}void update2structImageCon*IMGstructImageView*ob{ /*更新ob结构的值更新代码省略*/}void notifyObsstructImageCon*IMG{ /*当IMG结构的值发生变化时通知与之关联的所有ImageView结构变量*/int loopforloop=0loop<IMG→indexloop++{ IMG→myObs[loop]→update4 }} voidmain{structImageCon IMG/*定义一ImageCon变量*/structImageView explorer1explorer2/*定义两个ImageView变量*/ /*初始化与ImageCon变量相关的ImageView变量个数为0*/ IMG.index=0 explorer1.update=updatel/*设置explorerl变量的更新函数*/ explorer2.update=update2/*设置explorer2变量的更新函数*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ /*其他代码省略*/5 return}
热门题库
更多
中级网络工程师
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术