首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
有多个设备可以实现不同网络或网段的互连,中继器、网桥、路由器分别工作在开放系统互连参考模型的 (183) 、 (184) 和 (185) 。
查看本题答案
包含此试题的试卷
初级程序员《简单单选》真题及答案
点击查看
你可能感兴趣的试题
高层互连是指传输层及其以上各层协议不同的网络之间的互连实现高层互连的设备是
中继器
网桥
路由器
网关
在网络互连的层次中是在数据链路层实现互连的设备
网关
中继器
网桥
路由器
如果互连的局域网高层分别采用TCP/IP协议与SPX/IPX协议那么我们可以选择的多个网络互连设备应
中继器
网桥
网卡
路由器
在不同的网络之间实现分组存储和转发并在网络层提供协议转发的网络互连设备是______
网桥
路由器
中继器
转发器
是一种连接多个网络或网段的网络设备它能将不同网络或网段之间的数据信息进行翻译以使它们能够相互读懂对方
路由器
网桥
中继器
网卡
高层互连是指传输层及其以上各层协议不同的网络之间的互连实现高层互连的设备是
中继器
网桥
路由器
网关
【按序答1-3题】有多个设备可以实现不同网络或网段的互连工作在开放系统互连参考模型物理层数据链
网关
路由器
防火墙
中继器
在计算机网络中能将异种网络互连起来实现不同网络协议相互转换的网络互联设备是
集线器
路由器
网关
中继器
【按序答1-3题】有多个设备可以实现不同网络或网段的互连工作在开放系统互连参考模型物理层数据链
转发器
路由器
网桥
中继器
有多个设备可以实现不同网络或网段的互连中继器网桥路由器分别工作在开放系统互连参考模型的183184和
MAC子层
传输层
数据链路层
网络层
在不同的网络之间实现分组存储和转发并在网络层提供协议转换的网络互连设备是64
网桥
路由器
中继器
转发器
在网络层实现多个局域网互连的设备是
中继器
网桥
网关
路由器
在不同的网络之间实现分组存储和转发并在网络层提供协议转换的网络互连设备是______
网桥
路由器
中继器
转发器
不同网络之间实现数据帧的存储转发并在数据链路层进行协议转换的网络互连器称为
转换器
路由器
网桥
中继器
在不同的网络之间实现分组存储和转发并在网络层提供协议转发的网络互连设备的是______
网桥
路由器
中继器
转发器
有多种设备可以实现不同网状式网络之间的互联互联设备可按工作在OSI模型中的层次来划分其中在网络层实现
中继器
网桥
网关
路由器
有多个设备可以实现不同网络或网段的互连中继器网桥路由器分别工作在开放系统互连参考模型的183184和
数据链路层
网络层
会话层
物理层
热门试题
更多
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]下面的程序用DoleRob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止①在第一行的正中插入1②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示816357492[C程序]#include<stdio.h>#include<stdlib.h>#defineSIZE50mainintrowcolnvalue;inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE;scanf%d&n;if!n%2||n<1||1printf输入数据有误!/n;exit0;row=1;col=n+1/2;value=1;whilevalue<=2a[row][col]=value;/*计算下一位置*/ifvalue%n!=0row--;3;ifrow<1row=n;ifcol>n4;elserow++;value=5;printf/n%d阶魔方阵如下所示/n/nn;forrow=1;row<=n;row++forcol=1;col<=n;col++printf%5da[row][col];printf/n;
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 4处填
用二分法来检索数据最确切的说法是______
对于n个元素的关键字序列k1k2…kn若将其按次序对应到一棵具有n个节点的完全二叉树上使得任意节点都不大于其孩子节点若存在孩子节点则称其为小顶堆根据以上定义是小顶堆
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 2处填
线性表采用顺序存储结构若表长为m且在任何一个合法插入位置上进行插入操作的概率相同则插入一个元素平均移动______个元素
[说明]下面的程序用DoleRob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止①在第一行的正中插入1②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示816357492[C程序]#include<stdio.h>#include<stdlib.h>#defineSIZE50mainintrowcolnvalue;inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE;scanf%d&n;if!n%2||n<1||1printf输入数据有误!/n;exit0;row=1;col=n+1/2;value=1;whilevalue<=2a[row][col]=value;/*计算下一位置*/ifvalue%n!=0row--;3;ifrow<1row=n;ifcol>n4;elserow++;value=5;printf/n%d阶魔方阵如下所示/n/nn;forrow=1;row<=n;row++forcol=1;col<=n;col++printf%5da[row][col];printf/n;
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 4处填
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-*+计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46512037-*+的汁算过程如下①依次将46512037压入栈中②遇到-取出37120计算120-37=83将其压入栈中③遇到*取出835计算5×83=415将其压入栈中④遇到+取出41546计算46+415=461将其压入栈中⑤表达式结束则计算过程完成函数computingcharexpt[]int*result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK*s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACKs返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACKs若s是空栈则返回1否则返回0[C函数]intcomputingcharexpr[]int*resultSTACKs;inttnumab;char*ptr;InitStack&s;ptr=expr;pstr/*字符指针指向后缀表达式串的第一个字符*/while*ptr!=’/0’if*ptr==’’/*当前字符是空格*/1;/*字符指针指向下一字符*/continue;elseifisdigit*ptr/*当前字符是数字则将该数字开始的数字串转换为数值*/tnum=2;while*ptr>=’0’&&*ptr<=’9’tnum=tnum*10+3;ptr++;push4;else/*当前字符是运算符或其他符号*/if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’if!IsEmptySa=Tops;Pop&s;/*取运算符的第二个运算数*/if!IsEmptySb=Tops;Pop&s;/*取运算符的第一个运算数*/elsereturn-1;elsereturn-1;switch*ptrcase’+’:Push&Sb+a;break;case’-’:Push&sb-a;break;case’+’:Push&sb*a;break;case’/’:Push&sb/a;break;elsereturn-1;ptr++;/*字符指针指向下一字符*//*while*/ifIsEmptysreturn-1;else5=Tops;Pop&s;/*取运算结果*/if!IsEmptysreturn-1;return0;
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
对于长度为11的顺序存储的有序表若采用折半查找向下取整则找到第5个元素需要与表中的______个元素进行比较操作包括与第5个元素的比较
[说明]下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数函数intisPalmlongm的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0[C程序代码]#include<stdio.h>#include<stdlib.h>intisPalmlongminti=0k=0;charstr[32];whilem>0str[k++]=1+’0’;m=m/10;fori=0;i<k/2;i++ifstr[i]!=str[2]return0;return1;intmainlongnat;printfinputapositiveinteger:;scanf%ld&n;ifn<100||n>=1000return-1;while3printf%id->n;fora=0t=n;t>0;a=4*10+t%10;t=t/10;n=5;printf%id/nn;systempause;return0;
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-*+计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46512037-*+的汁算过程如下①依次将46512037压入栈中②遇到-取出37120计算120-37=83将其压入栈中③遇到*取出835计算5×83=415将其压入栈中④遇到+取出41546计算46+415=461将其压入栈中⑤表达式结束则计算过程完成函数computingcharexpt[]int*result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK*s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACKs返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACKs若s是空栈则返回1否则返回0[C函数]intcomputingcharexpr[]int*resultSTACKs;inttnumab;char*ptr;InitStack&s;ptr=expr;pstr/*字符指针指向后缀表达式串的第一个字符*/while*ptr!=’/0’if*ptr==’’/*当前字符是空格*/1;/*字符指针指向下一字符*/continue;elseifisdigit*ptr/*当前字符是数字则将该数字开始的数字串转换为数值*/tnum=2;while*ptr>=’0’&&*ptr<=’9’tnum=tnum*10+3;ptr++;push4;else/*当前字符是运算符或其他符号*/if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’if!IsEmptySa=Tops;Pop&s;/*取运算符的第二个运算数*/if!IsEmptySb=Tops;Pop&s;/*取运算符的第一个运算数*/elsereturn-1;elsereturn-1;switch*ptrcase’+’:Push&Sb+a;break;case’-’:Push&sb-a;break;case’+’:Push&sb*a;break;case’/’:Push&sb/a;break;elsereturn-1;ptr++;/*字符指针指向下一字符*//*while*/ifIsEmptysreturn-1;else5=Tops;Pop&s;/*取运算结果*/if!IsEmptysreturn-1;return0;
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 4填
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 2处填
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 2处填
[说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode intdata structNode*next NODE; [C语言函数] voidsortNODE*head NODE*ptr*preptr*endptr; inttempdata; ptr=head->next; while1/*查找表尾节点*/ ptr=ptr->next; endptr=ptr;/*令endptr指向表尾节点*/ ptr=2; whileptr!=endptr while3 ifptr->data>ptr->next->data tempdata=ptr->data;/*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; preptr=4ptr=ptr->next; endptr=5;ptr=head->next; 5处填
[说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode intdata structNode*next NODE; [C语言函数] voidsortNODE*head NODE*ptr*preptr*endptr; inttempdata; ptr=head->next; while1/*查找表尾节点*/ ptr=ptr->next; endptr=ptr;/*令endptr指向表尾节点*/ ptr=2; whileptr!=endptr while3 ifptr->data>ptr->next->data tempdata=ptr->data;/*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; preptr=4ptr=ptr->next; endptr=5;ptr=head->next; 1处填
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 3填
[说明]计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-*+计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46512037-*+的汁算过程如下①依次将46512037压入栈中②遇到-取出37120计算120-37=83将其压入栈中③遇到*取出835计算5×83=415将其压入栈中④遇到+取出41546计算46+415=461将其压入栈中⑤表达式结束则计算过程完成函数computingcharexpt[]int*result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK*s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACKs返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACKs若s是空栈则返回1否则返回0[C函数]intcomputingcharexpr[]int*resultSTACKs;inttnumab;char*ptr;InitStack&s;ptr=expr;pstr/*字符指针指向后缀表达式串的第一个字符*/while*ptr!=’/0’if*ptr==’’/*当前字符是空格*/1;/*字符指针指向下一字符*/continue;elseifisdigit*ptr/*当前字符是数字则将该数字开始的数字串转换为数值*/tnum=2;while*ptr>=’0’&&*ptr<=’9’tnum=tnum*10+3;ptr++;push4;else/*当前字符是运算符或其他符号*/if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’if!IsEmptySa=Tops;Pop&s;/*取运算符的第二个运算数*/if!IsEmptySb=Tops;Pop&s;/*取运算符的第一个运算数*/elsereturn-1;elsereturn-1;switch*ptrcase’+’:Push&Sb+a;break;case’-’:Push&sb-a;break;case’+’:Push&sb*a;break;case’/’:Push&sb/a;break;elsereturn-1;ptr++;/*字符指针指向下一字符*//*while*/ifIsEmptysreturn-1;else5=Tops;Pop&s;/*取运算结果*/if!IsEmptysreturn-1;return0;
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 1填
[说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode intdata structNode*next NODE; [C语言函数] voidsortNODE*head NODE*ptr*preptr*endptr; inttempdata; ptr=head->next; while1/*查找表尾节点*/ ptr=ptr->next; endptr=ptr;/*令endptr指向表尾节点*/ ptr=2; whileptr!=endptr while3 ifptr->data>ptr->next->data tempdata=ptr->data;/*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; preptr=4ptr=ptr->next; endptr=5;ptr=head->next; 3处填
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 5填
热门题库
更多
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术