字符串,数组,堆,栈

来源:互联网 发布:linux数据库损坏备份 编辑:程序博客网 时间:2024/06/07 17:52
【0、2、1、4、3、9、5、8、6、7】是以数组形式存储的最小堆,删除堆顶元素0后的结果是()

A.【2、1、4、3、9、5、8、6、7】

B.【1、2、5、4、3、9、8、6、7】

C.【2、3、1、4、7、9、5、8、6】

D.【1、2、5、4、3、9、7、8、6】


正确答案: D


第二,堆是一种经过排序的完全二叉树,最小堆:根结点的键值是所有堆结点键值中最小者。根据这个不难写出原来堆依次为 顶层0   第二层 2 1   第三层 4 3   9 5   第四层 8 6 7
第三,最小堆删除堆顶后,用最后一个元素暂代堆顶,然后变成顶层7   第二层2 1   第三层 4 3   9 5   第四层 8 6 ,7>2>1,故1和7对调,对调后顶层1   第二层2 7   第三层 4 3   9 5   第四层 8 6;因为9>7>5,5和7对调 ,对调后顶层1   第二层2 5   第三层 4 3   9 7   第四层 8 6;形成新的最小堆
故答案为:D 


中缀表达式(a+b)*c*(d-e/f) 转成后缀


ab+c*def/-*

遇到数字:直接输出
遇到'(':压栈
遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。
遇到符号则判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则出栈并输出,直到优先级相等或栈为空;如果栈顶符号的运算优先级低于或等于当前符号的运算优先级,则将当前符号压栈。
处理完字符串后将栈中剩余的符号全部输出。



下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。ss所指字符串数数组中共有M个字符串,且串长小于N。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
试题程序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#define M 5
 #define N20
 intfun(char(* ss)[N],int*n)
 {
     inti, k =0, len = N;
     for(i =0; i < ______; i++)
     {
         len = strlen(ss[i]);
         if(i ==0)
             *n = len;
         if (len ____ * n)
         {
             *n = len;
             k = i;
         }
     }
     return( _____ );
 }
 main( )
 {
     charss[M][N] = {"shanghai","guangzhou","beijing", "tianjing","chongqing"};
     intn, k, i;
     printf("\nThe originalb stringsare:\n");
     for(i =0; i < M; i++)
         puts(ss[i]);
     k = fun(ss, &n);
     printf("\nThe length of shortest string is: % d\n", n);
     printf("\nThe shortest string is: % s\n", ss[k]);
 }

A.N,< ,k
B.N, >,k
C.M,<,k
D.M,>,k


C




若6行5列的数组以列序为主序顺序存储,基地址为1000,每个元素占2个存储单元,则第3行第4列的元素(假定无第0行第0列)的地址是()
A.1040
B.1042
C.1026
D.备选答案A,B,C都不对





思路:按列存储,第一列的基址是:1000,第二列的基址是:1012,第3列是:1024,第4列是:1036,所以第三行第4列为:1036+2+2=1040





1 0
原创粉丝点击