递归与递归树

逆序打印字符串 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

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

观察者模式

观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者。

February 2, 2022 · 1 min · Rick Cui