1。注意位段用法和大头序和小头序- C$ N6 x1 ]% ?. ?( _2 {
1 C" }$ m8 c6 ^/ t, ]- k
2。字节对起问题
. }: i1 q! p: w6 G7 b
* N# o1 `+ w, ^3.全局变量的描述2 P8 c/ W4 p; J8 B: u6 V& D$ {* }( v
6 P! O: `+ u" v/ y/ C- E: J
\% Z& C |2 M; t/ t6 [; ~1.2叉树的遍历,前序,中序和后序。给一个2叉树你要能写出按上述遍历的序列。) z. I9 `9 ~) T: y
2.指针的长度,sizeof(char*) = 1; sizeof(int*) = 4等;
$ Z0 M- \/ `3 w比如会考int* a = 0x0000 0001; a+4 = ?
! y5 g* W4 m, }3.2维数组a[1][2]用指针怎么表示?*(*(a+1)+2);
* _* T# y. F% n, i4.指针问题,什么函数指针,返回指针类型的函数,常指针,指向常量的指针,数组指针,指向一维数组的指针。% U, m2 ]: h# R
5.指针和数组的区别。6 H+ t- K* s# |- N% p3 l N: c
char a[] = "Hi, pig!";4 x) `3 F, o% Q3 E H
char *p = "Hi, pig!";
" e3 I9 I3 o- V( s& e" A% A! M* N l( t# r3 \+ O+ ]
改错题:$ R7 O8 V4 [! n* Y
1.strcpy注意字符串长度,不要产生内存越界问题。9 l: {5 y* O9 w+ \# u
2.高质量c++上那些内存分配的改错题。
) D: N+ H0 I2 e; u1 Z4 M/ `3.unsigned char a;2 g: ^ J; ^/ l$ k( b
for(a = 0; a < 500; a++)
$ O! H' S. u J8 n1 N* x4 g7 L;
' v2 `- h7 J- M; q5 O之类注意死循环的改错题;
1 p' }! V( Y0 O2 ^4.静态变量的可重入问题 r% i ^& ~. y( p! {# q
5.宏的问题。! M% ^ c+ `0 o( n+ S
比如要求a+1的平方:
3 M* R, F6 f0 X& }3 C#define A_1(m) ((m)*(m))5 h* w X2 l7 U# ]7 D p z
int a = 6;9 C+ {7 a% w2 N# x& Y+ B
int val = A_1(a++);* G6 C3 \" Q; `$ E9 H
8 S ?! u( ~& Z% M
$ Y# T/ E: X+ G( L! H! I7 t @算法题:5 }6 S/ e2 @/ x q( \. l1 O5 @
1.设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序。 t+ o3 _8 Y/ W% p2 `4 F
2.找出1000以内满足既是平方数,又有两个数相等的数。例如121, 121=11*11且有2个1。- {: L& H1 ~1 ~; ~8 P* H, }
要求尽量优化算法。1 }2 | B+ I5 A
0 g; t. b0 \7 s2 e j7 M
+ V4 c. ~& t5 Q5 f) B0 V0 F/ D 后面这些不是试卷上的。
7 L/ H7 V# Y6 h其他稍微掌握一下:
: i: y& B" [; Q& {3 W: s2 v% s1.经典递归 例如hanoi塔问题:经典的递归,原问题包含子问题。有些问题或者数据结构本来就是递归描述的,用递归做很自然。
8 ]# f/ ^# k5 y6 k' V' P2.递归与递推 利用递归的思想建立递推关系,如由兔子生崽而来的fibonacci数列。但递推由于没有返回段,因此更为简单,有时可以直接用循环实现。
* g# Y' I: \6 `6 C6 p) _# a1 s' T& g3.分治 不少分治方法是源于递归思想,或是递归分解+合并处理。
) p' } ~* a' n4.回溯 规模较小的问题用回溯解决比较自然。注意递归前后要保证现场的保存和恢复,即正确的转化问题。 4 Q8 g, ~, y. y5 I9 Z$ h* `
5.动态规划 动态规划的子问题重叠性质与递归有某种相似之处。递归+动态修改查表是一种不错的建立动态规划模型的方法。
. t3 o- ^" j e6 q6.其他 其他么,就是不好归类。例如表达式处理,排列组合等。附带说一下,用递归来处理打印方案的问题还是很方便的。求把一个整数n无序划分成k份互不相同的正整数之和的方法总数0 b. b6 ?, \$ W
! f: ]8 H, i! g
; Y) E) C' z1 ]; g" e$ e$ E; N1 l
我认为必需掌握的算法:/ m4 @3 L; M* F8 D# Z
排序算法(尤其是快速排序和冒泡)
$ B$ `8 | x2 y+ }8 B7 B字符串函数实现。- L0 j/ v4 u) ]9 A# A9 J/ n+ f
* ]+ `" U7 F A9 w其它杂7杂8的。2 a- \( p. U, d* S) i' Z
比如:怎么判断一个单链表是不是循环链表。
/ c: I" `" l- I怎么求出一个无符号数中1的个数。9 Q5 M( r+ E3 n
怎么不用其他变量,实现两变量交换。 |