
刷题
董丹丹第100号
一个学渣属性的技术渣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单链表的逆序和倒数第n个节点
单链表的逆序: Node* reverse() { if(_pHead == NULL) return NULL; if(_pHead->_pNext == NULL) return _pHead; Node* pCur = _pHead; Node* pPre = NULL;原创 2017-07-14 17:22:32 · 373 阅读 · 0 评论 -
不用‘+’的Add函数
实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。 可以用位运算符实现:int Add(int num1, int num2) { return ((num1&num2)<<1) | (num1^num2); } void AddFun() { cout<<"32 + 45 = "<<Add(32, 45)<<endl; }原创 2017-07-14 17:48:28 · 399 阅读 · 0 评论 -
合并两个有序链表
合并两个有序链表,合并以后的链表依旧有序。 代码:#include <windows.h> #include <iostream> using namespace std; typedef struct Node { Node(const int& value) :_or(value) ,_pNext(NULL) {} int _or;原创 2017-07-14 15:41:05 · 347 阅读 · 0 评论 -
实现1+2+3...+n的不同解法
实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。 方法一:使用构造函数。 在构造函数中对静态成员变量++,创建n个对象,就能++n次。class Sum { public: Sum() { n++; sum += n; } static int GetSum() { return原创 2017-07-14 15:46:29 · 1393 阅读 · 0 评论 -
带环链表的处理
先给出几个要用的函数。1.Begin():Node* Begin(pNode pHead) { return pHead; }2.End():Node* End(pNode pHead) { pNode pCur = pHead; if(!pCur) { return NULL; } while(pCur->_pNext) {原创 2017-07-19 09:37:37 · 367 阅读 · 0 评论 -
将搜索二叉树转化为双向链表
用二叉树的_pLeft表示_prev,用二叉树的_pRight表示_next。 用中序遍历的方式遍历整棵二叉树。Node* BothwayList() { if(!_pRoot) return NULL; stack<Node*> s; s.push(_pRoot); Node* pCur = NULL原创 2017-08-01 22:45:45 · 348 阅读 · 0 评论 -
c语言模拟实现c++的继承和多态
因为c++的继承和多态是面向对象的,需要用类实现,而c语言没有类,所以就只能选择结构体。但是结构体中不能定义函数,所以可以使用函数指针来实现c++的成员函数。typedef void (*FUN)(); struct A { FUN fun; int a; }; struct B { A _a; int b; }; void fA() { cou原创 2017-08-01 22:56:47 · 393 阅读 · 0 评论