考研综合应用题中算法设计部分的代码书写规范

头文件

  • 头文件部分如果题目没有特殊说明可以去掉。

常量

  • 如果题目中要用到一个常量,则在用的地方加上一句注释,说明某某常量已定义即可,不必在前面补上#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++语言基础相关推荐

  1. c#书写规范之---代码书写规范

    代码书写规范          格式化使代码的逻辑结构很明显.花时间确保源代码以一致的逻辑方式进行格式化,这对于您和你的开发小组,以及以后维护源代码的其他开发人员都有很大的帮助. 以下几点是推荐的格式 ...

  2. java 代码书写规范_代码书写规范和命名规范

    上一篇给大家分享了一下,关于文档编写的几个概念.这篇文章阐述如果编写代码书写规范以及命名规范文档.[以java语言为例] 1.代码书写规范 代码书写规范,能够让不同的人,写出相同风格的代码.很多人都看 ...

  3. 网页编程代码书写规范

    网页编程,也就是网页代码的编写,其实也就是编程代码的书写,一个好的网站,其网页编码,是比较规范的,条理清晰,格式简洁美观,可读性强,那到底怎样才能规范好代码的编写规范,是一个值得大家深思的问题,想想自 ...

  4. C++代码书写规范简介

    C++代码书写规范简介 编码规范并不是必须的,写代码遵守一定的规范,会使阅读代码修改bug轻松一些. 作为代码初学者,了解掌握最基本的代码书写规范知识是必要的.由于代码不仅仅是让程序执行,代码更是给人 ...

  5. WEB前端代码书写规范

    WEB前端代码书写规范 1. 命名规范 a.ClassName命名 ClassName的命名应该尽量精短.明确,必须以单页面字母开头命名,且全部字母为小写,单词之间统一使用下划线 "_&qu ...

  6. GNU的C++代码书写规范,C语言之父Dennis Ritchie亲自修订 (转)

    GNU的C++代码书写规范,C语言之父Dennis Ritchie亲自修订 (转)[@more@]C++ Standard Library Style Guidelines  DRAFT 1999-0 ...

  7. GNU的C++代码书写规范

    GNU的C++代码书写规范,C语言之父Dennis Ritchie亲自修订 C++ Standard Library Style Guidelines  DRAFT 1999-02-26 ------ ...

  8. c++使用单向链表存储一组有序数据_初试攻略丨计算机考研中数据结构知识点总结,硬核!...

    点击蓝字的小伙伴奖励酥鸡哦 苏世计算机考研,程序猿专属的学习分享社区 [声明:本文为原创文章,未经同意,严禁转载和抄袭,违者将追究其法律责任] 正文字2607,预计阅读7分钟 / 写在前面的话 / 初 ...

  9. 考研之数据结构常见代码题01

    一.线性表 1.在一个递增有序的顺序表中插入元素Y,得到的顺序表仍然有序. 该算法的思想主要分有三步:找到插入位置.插入.整个顺序表的长度加一. //find方法是用来寻找所插入元素的合适位置int ...

最新文章

  1. 【Codeforces】1065B Vasya and Isolated Vertices (无向图的)
  2. Remove Duplicates from Sorted List
  3. python定义一个类和子类_Python面向对象class类属性及子类用法分析
  4. markdown 表格对齐方式、换行、内嵌列表、...
  5. 8位可控加减法器_自主可控:QTouch在军工道系统上的应用
  6. 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对
  7. Java 常用正则表达式搜集ing
  8. C# Xamarin For Android移动开发基础进修篇
  9. Java中的输入、输出流
  10. 鉴源实验室丨车载ECU嵌入式软件的测试入门
  11. 阿里云ACA课程之阿里云简介
  12. 网站点击流数据分析项目
  13. 安卓虚拟机_【Android】安卓虚拟机 VMOS
  14. Hive beeline详解
  15. 共享文件夹无法打开——服务器存储空间不足,无法处理此命令
  16. GC导致线上CPU超100%
  17. 高手怎么抓热点,每天几点操作?
  18. 如何解锁元宇宙?应用场景决定商业化变现
  19. Linux公平队列FQ接口实现
  20. [转]“子不语怪力乱神”新解

热门文章

  1. 网络营销培训:企业微信公众号的运营策略有哪些?
  2. html div坐标定位,通过坐标来定位div
  3. 分享一个苹果Siri接入ChatGPT的方法,让你的Siri更智能
  4. Adobe Audition 2020使用 2020.10.6更新
  5. 二维偏序/数点——学习笔记
  6. 计算机c语言二级刷什么题,刷这些计算机等级考试题库,二级C语言试题!
  7. 投资就是时间上的平衡消费
  8. nc、hdf等数据转为带地理信息的geotif
  9. 志愿者:一块最没有悬念的金牌
  10. 什么是有线电视系统?有线电视系统的组成部分是什么?