天勤考研中数据结构的代码书写规范以及C与C++语言基础
考研综合应用题中算法设计部分的代码书写规范
头文件
- 头文件部分如果题目没有特殊说明可以去掉。
常量
- 如果题目中要用到一个常量,则在用的地方加上一句注释,说明某某常量已定义即可,不必在前面补上#define XXXX。
主函数
- 写出自己的函数说明(函数体)
- 写清楚函数的接口
- 何为函数接口
- 可以理解为函数的入口和出口
- 函数定义中的形参表可以理解为函数入口。
- 函数体中的输出语句和返回值部分可以理解为函数出口。
- 何为函数接口
C与C++语言基础
数据类型
基本数据类型
- 整形
- int、long、…考研中涉及整数的题目,如果没有特殊要求用int
- 字符型char
- 浮点型float、double、…对于处理小数的题目,在题目没有特殊要求的情况下用float
结构型
结构型可以理解为用户用已有数据类型(int,char,float)为原料制作的数据类型。
- 结构体
- 结构体是系统提供给程序员制作新的数据类型的一种机制,即可用系统已有的不同的基本数据类型或用户自定义的结构型,组合成用户需要的复杂数据类型。
例
typedef struct
{int a;char b;float c;
}TypeA;
指针型
指针型变量里装的是变量的地址,通过它可以找出这个变量在内存中的位置,故名为指针型。
'*‘相当于取变量内容,*a就是取变量a存储的地址所在内存单元上的内容。’&'相当于取变量地址,&b就是取变量b的地址。
例
#include<stdio.h>
#include<iostream>
using namespace std;
int main(){int a=0;int b=1;int *c;int *d;cout<<"a和b的地址:"<<&a<<" "<<&b<<endl;cout<<"未給c和d赋值时c,d随机指向的地址:"<<c<<" "<<d<<endl;c=&a;d=&b;cout<<"c,d指向的地址即a和b的地址:"<<c<<" "<<d<<endl;cout<<"a和b的值:"<<*c<<" "<<*d<<endl;cout<<"c和d的地址:"<<&c<<" "<<&d<<endl;cout<<"取c和d的地址上的存储的值即a和b的地址:"<<*&c<<" "<<*&d<<endl;cout<<"取c和d的地址上的存储的值即a和b的地址,并取该地址上的值即a和b的值:"<<*(*&c)<<" "<<*(*&d)<<endl;}
结点的构造
链表节点的定义
设结点有两个域:一个是数据域,用来存放数据;另一个是指针域,用来存放下一个结点的位置。
链表结点的结构型如下:
typedef struct Node
{int data;struct Node *next;
}Node;
二叉树结点的定义
例
typedef struct BTNode
{int data;struct BTNode *lchild;struct BTNode *rchild;
}BTNode;
Typedef别名的知识回顾
Typedef关键字的作用就是为变量类型起个别名。
typedef struct Node
{int data;struct Node *next;
}Node;//别名位置
此结构体变量类型实际的名字应为:struct Node
使用此变量类型定义一个名为"stu1"的变量
struct Node stu1;
使用typedef为此变量类型定义别名"Node"后,“Node"等价于"struct Node”
用别名为此变量类型定义一个名为"stu2"的变量
Node stu2;
malloc()函数的使用
用以定义的结构体类型来制作新的结点,以二叉树为例
① BTNode BT;
② BTNode *BT;
BT=(BTNode*)malloc(sizeof(BTNode));
sizeof()计算结点类型所占空间大小的运算符,malloc()申请结点的内存空间。方法②过程:先利用sizeof计算结点所需的内存空间大小,再交给malloc取申请内存,最后将BT指针指向该内存。
使用malloc()函数模板
p=( *)malloc(sizeof( ));
将任意类型填入括号内即可生成新结点,此方法天勤考研建议熟记!
- 方法②的优点
- 方法②中的BT必要时可以离开这个结点转向其他结点,而方法①则不行。
- 方法①和②的用法不同点
- 方法①取值域:BT.data;
- 方法②取值域:BT->data;或(*BT).data
函数
考虑被传入是参数是否发生改变
例
int a;
void f(int x){++x;
}
a=0;
f(a);
此例中a的值是不会发生改变的,在f(a)函数入口a只是把值赋给了形参x,随后函数只对内部变量形参x进行了++x操作,所以a的值没有发生改变。
如何使传入参数发生改变?
普通变量引用型传参
int a=0;
void f(int &x)
{++x;
}
f(a);
相当于a取代了x的位置(此时x就没有实际内存空间只是a的别名),函数f()就是在对a本身进行操作。
指针型变量引用型传参
要对传入的指针进行改变
void f(int *&x)
{++x;
}
执行完函数后,指针x的值自增1。可以这样理解:&x取出指针x自己的地址,*&x取出指针x的内容。
地址传参
void Exchg2(int *px, int *py){int tmp = *px;*px = *py;*py = tmp;}Exchg2(&a,&b);
三种传参实例
#include<stdio.h>
#include<iostream>
using namespace std;void f(int &x)//引用传参{++x;}void ff(int *&x)//指针传参{++x;}void Exchg2(int *px, int *py)//地址传参{int tmp = *px;*px = *py;*py = tmp;}
int main(){int a=0;int b=2;int *c;int *d;c=&a;d=&b;cout<<"a和b的值:"<<*c<<" "<<*d<<endl;cout<<"c和d的地址:"<<&c<<" "<<&d<<endl;cout<<"取c和d的地址上的存储的值即a和b的地址:"<<*&c<<" "<<*&d<<endl;cout<<"取c和d的地址上的存储的值即a和b的地址,并取该地址上的值即a和b的值:"<<*(*&c)<<" "<<*(*&d)<<endl;f(a);ff(d);cout<<"a和b的值:"<<a<<" "<<b<<endl;cout<<"c和d的地址:"<<&c<<" "<<&d<<endl;cout<<"取c和d(自增后)的地址上的存储的值即a和b(自增后)的地址:"<<*&c<<" "<<*&d<<endl;Exchg2(&a,&b);cout<<"a和b的值:"<<a<<" "<<b<<endl;}
天勤考研中数据结构的代码书写规范以及C与C++语言基础相关推荐
- c#书写规范之---代码书写规范
代码书写规范 格式化使代码的逻辑结构很明显.花时间确保源代码以一致的逻辑方式进行格式化,这对于您和你的开发小组,以及以后维护源代码的其他开发人员都有很大的帮助. 以下几点是推荐的格式 ...
- java 代码书写规范_代码书写规范和命名规范
上一篇给大家分享了一下,关于文档编写的几个概念.这篇文章阐述如果编写代码书写规范以及命名规范文档.[以java语言为例] 1.代码书写规范 代码书写规范,能够让不同的人,写出相同风格的代码.很多人都看 ...
- 网页编程代码书写规范
网页编程,也就是网页代码的编写,其实也就是编程代码的书写,一个好的网站,其网页编码,是比较规范的,条理清晰,格式简洁美观,可读性强,那到底怎样才能规范好代码的编写规范,是一个值得大家深思的问题,想想自 ...
- C++代码书写规范简介
C++代码书写规范简介 编码规范并不是必须的,写代码遵守一定的规范,会使阅读代码修改bug轻松一些. 作为代码初学者,了解掌握最基本的代码书写规范知识是必要的.由于代码不仅仅是让程序执行,代码更是给人 ...
- WEB前端代码书写规范
WEB前端代码书写规范 1. 命名规范 a.ClassName命名 ClassName的命名应该尽量精短.明确,必须以单页面字母开头命名,且全部字母为小写,单词之间统一使用下划线 "_&qu ...
- GNU的C++代码书写规范,C语言之父Dennis Ritchie亲自修订 (转)
GNU的C++代码书写规范,C语言之父Dennis Ritchie亲自修订 (转)[@more@]C++ Standard Library Style Guidelines DRAFT 1999-0 ...
- GNU的C++代码书写规范
GNU的C++代码书写规范,C语言之父Dennis Ritchie亲自修订 C++ Standard Library Style Guidelines DRAFT 1999-02-26 ------ ...
- c++使用单向链表存储一组有序数据_初试攻略丨计算机考研中数据结构知识点总结,硬核!...
点击蓝字的小伙伴奖励酥鸡哦 苏世计算机考研,程序猿专属的学习分享社区 [声明:本文为原创文章,未经同意,严禁转载和抄袭,违者将追究其法律责任] 正文字2607,预计阅读7分钟 / 写在前面的话 / 初 ...
- 考研之数据结构常见代码题01
一.线性表 1.在一个递增有序的顺序表中插入元素Y,得到的顺序表仍然有序. 该算法的思想主要分有三步:找到插入位置.插入.整个顺序表的长度加一. //find方法是用来寻找所插入元素的合适位置int ...
最新文章
- 【Codeforces】1065B Vasya and Isolated Vertices (无向图的)
- Remove Duplicates from Sorted List
- python定义一个类和子类_Python面向对象class类属性及子类用法分析
- markdown 表格对齐方式、换行、内嵌列表、...
- 8位可控加减法器_自主可控:QTouch在军工道系统上的应用
- 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对
- Java 常用正则表达式搜集ing
- C# Xamarin For Android移动开发基础进修篇
- Java中的输入、输出流
- 鉴源实验室丨车载ECU嵌入式软件的测试入门
- 阿里云ACA课程之阿里云简介
- 网站点击流数据分析项目
- 安卓虚拟机_【Android】安卓虚拟机 VMOS
- Hive beeline详解
- 共享文件夹无法打开——服务器存储空间不足,无法处理此命令
- GC导致线上CPU超100%
- 高手怎么抓热点,每天几点操作?
- 如何解锁元宇宙?应用场景决定商业化变现
- Linux公平队列FQ接口实现
- [转]“子不语怪力乱神”新解