为了考研过程中方便总结看书和听课的记录,决定将一些内容敲成博客以供自己复习和使用,仅供参考。
✅考研中只需写出一个或多个可以解决问题的有着清楚接口描述的函数即可。
下面展示一个 例子
。
//1
#include
#define xxxxxx
using namespace std;
//2
void Reverse(int a,xxx) //4
{
xxxxxx;
}
void RCR(int R[],XXXXX)
{
XXXXXX;
}
//3
int main()
{
xxxxxxxxxxx;
Reverse(a);
RCR(A[],b);
xxxxxxxxxxxx;
return 0;
}
考研中为了代码简洁,其中:
第1部分可以省略,为了节省考试时间且保持试卷整洁,包括变量的定义也可以在必要处增加注释即可。
第3部分是主函数的部分,这一部分调用定义的函数,也可以省去。
//接口是用户和函数打交道的地方,通过接口,只要输入数据就可以得到想要的结果
因此上述代码,只要写出自己的函数说明(第2部分)与接口(第4)写清楚即可
✅补充一点:在使用for循环和if判断语句时,若接下来的执行语句只有一句,为了代码简洁,就不使用{}。
下面展示一个 在顺序表中插入数据元素的插入算法作为例子
。
int insertElem(Sqlist &L, int p, int e) //修改前
{
if (p < 0 || p > L.length || L.length == maxSize) {
return 0;
}
for (int i = L.length-1; i >= p; i--) {
L.data[i+1] = L.data[i];
}
L.data[p] = e;
++(L.length);
return 1;
}
可以修改为
int insertElem(Sqlist &L, int p, int e) //修改后
{
int i;
if (p < 0 || p > L.length || L.length == maxSize)
return 0;
for (i = L.length-1; i >= p; i--)
L.data[i+1] = L.data[i];
L.data[p] = e;
++(L.length);
return 1;
}
在C++中,for循环语句与if判断语句等,若不使用{ },则只能执行到“;”结尾的那一句。例如修改前 的 if后的 return 0,只执行一句,此时(即 if 或 for 后只有一句的情况)可以将 { }省略。
若循环或判断语句需要执行多条语句则使用{ },表示那几句合成一句 。如以下执行多句,则必须使用{ }。
for (i = left, j = right; i < j; ++i, --j)
{
temp = L.data[i];
L.data[i] = L.data[j];
L.data[j] = temp;
}
⚠️当然考试中使用的有许多为了简洁的方法,与为了便于理解的解释,在真正项目开发时,并不适用。
typedef struct
{//定义一个结构体TypeA,其中有三个成员:a,b,c
int a;
char b;
float c;
}TypeA;
TypeA a;//定义了一个结构体变量a
a.a a.b a.c
TypeA a[3];//定义一个结构体数组
a[0].a a[0].b a[0].c
.....
a[3].a a[3].b a[3].c
int *x;//声明一个指针
TypeA *y//使用结构体类型定义指针
若 a为指针变量且它指向变量b,则a中存放变量b的地址。*a就是取变量b的内容(即x =*a等价于 x=b ),&b就是取变量b的地址,a=&b;就是将b的地址存于a中。
⚠️注:在考研中,指针常和结构体共同使用来构造结点(如链表结点,二叉树等)
typedef struct LNode{//单链表结点
int data;
struct LNode *next;
}LNode;
typedef struct BTNode {//二叉树结点
int data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;