递归与递归树

逆序打印字符串 void printReverseString(const char* str){ if(*str == '\0'){ return; } printReverseString(str + 1); printf("%c", *str); } int main() { const char* str = "Hello World"; printReverseString(str); // dlroW olleH return 0; } 逆序输出链表 struct LinkNode{ int data; struct LinkNode* next; }; void printReverseLinkNode(struct LinkNode* header){ if(header == NULL){ return; } printReverseLinkNode(header->next); printf("%d\n", header->data); } int main() { struct LinkNode* header = malloc(sizeof(struct LinkNode)); struct LinkNode* node1 = malloc(sizeof(struct LinkNode)); node1->data = 10; node1->next = NULL; struct LinkNode* node2 = malloc(sizeof(struct LinkNode)); node2->data = 20; node2->next = NULL; struct LinkNode* node3 = malloc(sizeof(struct LinkNode)); node3->data = 30; node3->next = NULL; header->next = node1; node1->next = node2; node2->next = node3; printReverseLinkNode(header->next); return 0; } 递归实现给出一个数 8793,依次打印千位数 8、百位数 7、十位数 9、个位数 3...

February 7, 2022 · 2 min · Rick Cui

常用的宏定义

int main() { printf("%s\n", __FILE__); // main.c printf("%d\n", __LINE__); // 14 printf("%s\n", __DATE__); // Feb 7 2022 printf("%s\n", __TIME__); // 01:59:37 return 0; } // func1.h #ifdef __cplusplus extern "C"{ #endif void func1(); #ifdef __cplusplus } #endif // main.h extern "C"{ include "func1.h" } extern "C"{ extern void func1(); } int main() { func1(); return 0; }

February 7, 2022 · 1 min · Rick Cui

Ubuntu 常用命令

Linux 命令大全 注意:需提前配置系统环境,比如系统编码为 UTF-8 系统环境配置 1. 设置系统语言 查看系统支持的字符集:locale、locale -a 查看时间:date 安装中文语言包:sudo apt install language-pack-zh-hans 添加到系统配置文件 .bashrc export LANG=zh_CN.UTF-8 重新加载:source .bashrc 一、更新和升级包 1. 更新和升级包 sudo apt update && sudo apt upgrade 2. 安装常用开发环境 sudo apt-get install build-essential 3. 安装软件 sudo apt install tree 4. 删除不需要的包 sudo apt remove gcovr sudo apt autoremove 5. 查看已安装的软件 dpkg -l | grep gcovr...

February 7, 2022 · 4 min · Rick Cui

char* 数组

void printArr(const char ** p, int len){ for(int i = 0; i < len; ++i){ cout << p[i] << endl; } } void sortSelect(const char ** p, int len){ for(int i = 0; i < len - 1; ++i){ int max = i; for(int j = i + 1; j < len; ++j){ if(p[j] > p[max]){ max = j; } } // 交换 if(i != max){ const char* tmp = p[i]; p[i] = p[max]; p[max] = tmp; } } } int main() { const char* arr[] = {"aa", "bb", "cc", "dd", "ee"}; int len = sizeof(arr) / sizeof(char*); cout << len << endl; printArr(arr, len); sortSelect(arr, len); cout << "----------------" << endl; printArr(arr, len); return 0; } 输出:...

February 3, 2022 · 1 min · Rick Cui

装饰器模式

装饰模式又叫包装模式,通过一种对客户端透明的方式来扩展对象功能,是继承关系的一种替代。 装饰模式可以动态给一个类增加功能

February 2, 2022 · 1 min · Rick Cui