1。注意位段用法和大头序和小头序+ G7 g F1 T- S b9 z" @2 f1 ]2 g
( |& N( |' ?4 e9 t% o+ r$ g3 a2。字节对起问题' b* g2 l% u# N* {$ g
' j6 v! D$ z$ U8 D% T3.全局变量的描述1 i% H# g5 C1 ~1 N/ H
2 A. V3 F' _- V5 L$ R! u2 L0 |, A! K) A
1.2叉树的遍历,前序,中序和后序。给一个2叉树你要能写出按上述遍历的序列。
5 T$ W9 _/ v1 n( ^0 E( u0 ?9 q2.指针的长度,sizeof(char*) = 1; sizeof(int*) = 4等;% s+ I+ E- m$ D' e
比如会考int* a = 0x0000 0001; a+4 = ?! n$ N* j9 Y' c
3.2维数组a[1][2]用指针怎么表示?*(*(a+1)+2);' M/ b) p9 e9 a0 b7 }
4.指针问题,什么函数指针,返回指针类型的函数,常指针,指向常量的指针,数组指针,指向一维数组的指针。
- d8 e" U% \% z6 S4 }1 T+ w/ K2 l5.指针和数组的区别。
+ Z- I! @$ O3 o9 r. M* ~! ^( cchar a[] = \"Hi, pig!\";
3 Q& G3 A$ D- { |# {char *p = \"Hi, pig!\";
) I- X) h; v) s6 L& g* q2 V) n. z( ?9 E3 |
改错题:
) k) q* ^5 q9 u4 k- @1.strcpy注意字符串长度,不要产生内存越界问题。
+ J' K o( e5 e2.高质量c++上那些内存分配的改错题。' k1 V1 ^: Q$ ~! a0 s* R9 E
3.unsigned char a;
9 e$ J3 P0 K vfor(a = 0; a < 500; a++)
/ M3 b+ ]1 {! m8 @6 t* y/ o/ B# ~;, Z; H9 T! n( F* W8 [5 x7 \" k
之类注意死循环的改错题;
! E8 I8 T$ U& M9 J4.静态变量的可重入问题, N. O/ X$ J) K( p* N( N
5.宏的问题。
$ h1 t: P% d2 v比如要求a+1的平方:
7 X; r: [! Q7 @, F" a/ S6 e' Z#define A_1(m) ((m)*(m))
$ P. N& j, [$ U4 C5 ^+ E$ cint a = 6;/ i( e9 g+ m: d
int val = A_1(a++);, s/ `% J* i, }9 t( `
# p+ J' h: ~. w1 `7 ?4 c
7 |. W/ d0 @$ ]% L! Q
算法题:
# k8 W) Z3 D, e9 b1.设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序。0 T! t9 z3 B& H
2.找出1000以内满足既是平方数,又有两个数相等的数。例如121, 121=11*11且有2个1。
7 {! F; Q5 S8 B) @8 I' v要求尽量优化算法。4 r1 Z$ P2 g% ]1 s' i7 |4 C3 F- i
) T7 m R$ v! g4 G1 `! X
4 F4 C: s) S Q 后面这些不是试卷上的。
" w1 s& ~7 R, j- T t2 i3 C1 g& H其他稍微掌握一下:1 T5 N% z U0 r" W, U C, B# c
1.经典递归 例如hanoi塔问题:经典的递归,原问题包含子问题。有些问题或者数据结构本来就是递归描述的,用递归做很自然。
h7 S% X& U. [! }1 z2 E: X) e2.递归与递推 利用递归的思想建立递推关系,如由兔子生崽而来的fibonacci数列。但递推由于没有返回段,因此更为简单,有时可以直接用循环实现。
) m' f$ b# ]- _3.分治 不少分治方法是源于递归思想,或是递归分解+合并处理。
8 r, i: t# `. ?! ]4.回溯 规模较小的问题用回溯解决比较自然。注意递归前后要保证现场的保存和恢复,即正确的转化问题。 + S( U% B( E, s+ J, `7 E: B; S3 e
5.动态规划 动态规划的子问题重叠性质与递归有某种相似之处。递归+动态修改查表是一种不错的建立动态规划模型的方法。 ) r. a# s5 I" d6 s2 ]! Q
6.其他 其他么,就是不好归类。例如表达式处理,排列组合等。附带说一下,用递归来处理打印方案的问题还是很方便的。求把一个整数n无序划分成k份互不相同的正整数之和的方法总数
9 x* v& H% L! @4 H% D: ~% w: ^5 G8 d. t/ x1 C9 S' K( [4 ?0 O
7 [% ]. t1 @: E7 ? ~$ g! o. |
我认为必需掌握的算法:9 w6 R# [7 |5 R. c z- Q6 I9 `
排序算法(尤其是快速排序和冒泡)/ t1 f& \7 V1 `7 {
字符串函数实现。
: S3 t( `# {6 L* |; z
8 m z3 P R4 j& H% q, q% w其它杂7杂8的。
; i" A- U# `7 [比如:怎么判断一个单链表是不是循环链表。
2 E! |" P8 w- }2 K9 \+ I O怎么求出一个无符号数中1的个数。: @! F9 N0 Y3 X& Z
怎么不用其他变量,实现两变量交换。 |