字符串,数组,堆,栈

【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 N 20
  int fun( char (* ss)[N], int *n)
  {
     int i, 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( )
  {
     char ss[M][N] = { "shanghai" , "guangzhou" , "beijing" , "tianjing" , "chongqing" };
     int n, 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值