- 浏览: 324444 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
huangyunbin:
swc.advance(); 这个什么时候被调用是最核心的 ...
滑动窗口计数java实现 -
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB 从入门到精通专题教程 -
rryymmoK:
深入浅出MongoDB应用实战开发下载地址:http://pa ...
MongoDB 从入门到精通专题教程 -
u012352249:
怎么支持多个窗口啊?
滑动窗口计数java实现 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB 从入门到精通专题教程
//快速排序 #include <iostream> using namespace std; #define N 10240 template< typename T > void sort( T* a, int n ){ if(n<=0) return; if(n==2) { if(a[1] < *a) swap(a[1],*a); return; } swap( *a,a[n>>1] ); T v = *a; T* left = a+1; T* right = a+n-1; while( left<right ){ while( left<right&&*left<v ) ++left; while( *right>v&&right>a ) --right; if( left<right ) swap(*left,*right ); } swap( *a, *right ); sort( a, right-a ); sort( right+1, n-1-(right-a) ); } int main() { int a[N]; for( int i=0; i<N; i++) a[i] = N-i; time_t t = time(NULL); sort(a,N); cout << "Time : " << time(NULL)-t << endl; for( int i=0; i<10; i++) cout << a[i] << ' ' ; cout << endl; }
//二叉树 #include <iostream> using namespace std; template< typename T > class BanaryTree{ private: struct Node{ T data; Node* left; Node* right; Node():data(T()),left(NULL),right(NULL){ } Node(const T& t):data(t),left(NULL),right(NULL){ } }; // the end of struct Node* root; public: BanaryTree():root(NULL){ } ~BanaryTree(){ clear(root); cout << "~BanaryTree()" << endl; } void push(const T& t ){ Node* p = new Node(t); insert(root, p ); } bool empty(){ return root==NULL; } void travel(){ show(root); cout << endl; } int size(){ return size(root); } bool find( const T& t ){ Node* p = new Node(t); return find(root, p)!=NULL; } void erase( const T& t ){ Node* p = new Node(t); Node*& q = find(root,p); if(!q) return; Node* r = q; insert( q->right, q->left ); q = q->right; delete r; } void update(const T& o, const T& n){ if( !find(o) ) return; erase(o); push(n); } private: Node*& find( Node*& tree,Node*& p ){ if(!tree) return tree; else if(!p) return p; else if( tree->data == p->data ) return tree; else if(p->data < tree->data ) return find( tree->left, p); else return find( tree->right, p); } int size( Node* tree ){ if(!tree) return 0; return size(tree->left) + size(tree->right) + 1; } void show(const Node* tree){ if(!tree) return; show(tree->left); cout << tree->data << ' '; show(tree->right); } void insert( Node*& tree,Node* p){ if(!tree) tree = p; else if(p->data<tree->data) insert(tree->left,p); else insert(tree->right, p); } void clear(Node*& tree){ if( empty() ) return; if( !tree ) return; clear( tree->left ); clear( tree->right ); delete tree; tree = NULL; } }; //the end of class int main() { BanaryTree<int> bi; for(int i=0; i<10; i++) bi.push(10-i); bi.travel(); cout << "size() : " << bi.size() << endl; cout << "find(5) : " << bi.find(5) << endl; cout << "find(100) : " << bi.find(100) << endl; bi.erase(6); bi.travel(); bi.erase(50); bi.travel(); bi.update(10,11); bi.travel(); bi.update(10,11); bi.travel(); }
发表评论
-
UC++之目录和文件操作
2009-06-05 11:55 1325* UC + 文件系统 - 目 ... -
快速排序完整示例
2009-06-01 21:04 1118#include <iostream> usin ... -
C++容器与迭代器
2009-06-01 17:55 2024* 容器的迭代器还有几种: + iterator:正常迭 ... -
c++排序算法与模板和STL
2009-05-31 13:32 1856* 冒泡排序 一轮比较所有相邻数据对,如果顺序不合适就交换, ... -
C++算法与二叉树的实现
2009-05-30 18:35 2552* 输出格式控制 + 成员函数:width fill pr ... -
c++链表 异常 内部类 输出格式控制
2009-05-29 21:36 1736C(控制台) F(文件) ------------- ... -
C++之I/O
2009-05-27 21:26 1898* 重载 + 拷贝构造函数A(const A& o ... -
C++拷贝构造函数与运算符重载
2009-05-26 20:32 2473拷贝构造函数与运算符的重载 * 多态 - 前堤:继承,虚函 ... -
C++多态与类型转换
2009-05-25 17:10 1905c++中字符串的处理,用string进行处理,实际上它是一个类 ... -
类的继承
2009-05-24 09:42 10211,如何定义,实现一个类 ... -
面向对象编程
2009-05-23 19:20 746//倒计时 #include <iostr ... -
C++ 面向对象
2009-05-23 15:40 966* 指针简单总结 //接受命令行参数的函数 int main ... -
C与C++中的time相关函数
2009-05-23 14:03 1334本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所 ... -
c++指针续
2009-05-23 11:16 989//常指针,或叫定指针:指 ... -
C++指针
2009-05-22 19:22 1206C++ 里有字符串类型string ,最大可支持1G,可用st ... -
数组本质
2009-05-21 18:52 1244数组是一片连续的内存空间,定义时一般指明大小和类型,这样编译器 ... -
C++用递归解决汉诺塔问题(续)
2009-05-19 12:16 971#include <iostream.h> ... -
c++ 递归实例二
2009-05-18 22:37 1702#include <iostream.h> ... -
C++用递归解决汉诺塔问题
2009-05-18 21:54 2576递归确实是一个不错的算法,可以将原来很复杂的问题简化.这里要注 ... -
C++ 入门
2009-05-15 21:31 0一次性修改LINUX环境变量:(bash)export $PA ...
相关推荐
本压缩包包含了一系列与C和C++编程相关的实践示例,涵盖了数据结构、算法和基本操作等核心知识点。 首先,我们看到"从下至上按层遍历二叉树.c",这是关于二叉树的一种遍历方法。二叉树是一种非线性数据结构,下至上...
6. **哈希表**:为了快速查找特定图书,可以构建哈希表,通过图书编号或关键词实现快速检索。 接下来,我们探讨**C++编程语言**。C++是一种强大的、面向对象的编程语言,适合开发这样的系统。在本项目中,C++的以下...
- 文件系统:文件系统中的目录结构可以看作是一种树形数据结构,C和C++可以用于实现文件的增删改查操作。 - 数据库:数据库索引往往基于B树或B+树,C和C++能够实现这些高效的数据结构。 - 网络协议:TCP/IP协议栈...
2. 分析代码实现,注意关键函数和方法,理解它们如何实现数据结构的增删改查或算法的逻辑流程。 3. 运行示例,观察输出,验证算法的正确性。 4. 对比不同数据结构和算法的效率,了解何时使用哪种更合适。 5. 尝试...
本实验代码是针对山东大学数据结构课程设计的一份实践材料,旨在帮助学生掌握二叉树的基本操作,包括增、删、改、查等核心功能。 首先,我们要理解二叉树的基本概念。二叉树是由n(n>=0)个有限结点组成一个具有...
这些容器类可以用来存储不同类型的数据,并提供了丰富的接口来进行数据的增删改查。 2. **算法**:STL中定义了许多通用的算法函数,如sort、find、copy等,可以方便地应用于各种容器。 3. **迭代器**:迭代器是STL的...
面向对象的方法则可能将数组封装在类中,提供增删改查等接口。 二、链表 链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C++中,链表可以通过结构体或类来实现,每个节点是一个对象,包含数据域...
例如,vector是一种动态数组,可以方便地进行元素的增删改查,而map则提供了键值对的存储,支持高效的查找操作。 在实际编程中,结合使用算法和数据结构是解决问题的关键。例如,当我们需要处理大量数据时,可能会...
课后习题可能包括创建、初始化、遍历以及对数组元素的增删改查操作。 2. **链表**:链表是由节点构成的线性数据结构,每个节点包含数据和指向下一个节点的指针。单链表、双链表和循环链表是常见的链表类型。习题...
1. **线性数据结构**:如数组和链表,可能会涉及到动态数组的增删改查操作,链表的遍历、插入和删除等。 2. **栈与队列**:它们是两种基础的抽象数据类型,具有后进先出(LIFO)和先进先出(FIFO)的特性。在实际...
例如AVL树和红黑树都是BBST的实现,它们通过旋转和重新着色等操作,保持树的平衡,从而确保增删查改的时间复杂度始终维持在O(logn)级别。 红黑树是一种自动平衡的二叉搜索树,其节点着色规则复杂,但它的平衡操作...
例如,可能会有二叉搜索树的增删改查操作,这有助于理解树的特性;也可能包含图的遍历算法,比如深度优先搜索和广度优先搜索,这对于理解网络拓扑和路径寻找很重要;更有可能包含动态规划的实例,如背包问题或最长...
- **链表**:包括单链表、双链表和循环链表的增删改查操作。 - **栈**:后进先出(LIFO)的数据结构,实现括号匹配等。 - **队列**:先进先出(FIFO)的数据结构,如循环队列和优先级队列。 - **树**:如二叉...
- **SQL语言**:熟悉SQL语法,能够进行基本的数据增删改查操作。 - **ORM框架**:使用如SQLite、MySQL、PostgreSQL等数据库管理系统时,选择合适的ORM框架简化数据访问过程。 - **数据库连接池**:了解如何使用...
1. **数组、链表、栈、队列**:基础数据结构的理解和操作,如增删改查、遍历等。 2. **树与图**:二叉树、平衡树(AVL、红黑树)、图的遍历(深度优先搜索、广度优先搜索)等。 3. **排序与查找**:快速排序、归并...
- **排序算法**:可能会出现快速排序、归并排序、插入排序、冒泡排序等,考察效率和实现细节。 - **查找算法**:二分查找、哈希查找等,理解其时间复杂度和应用场景。 - **链表操作**:如反转链表、删除节点、...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
5. **数据库**:SQL语言基础,如查询、增删改查操作,关系数据库模型,事务处理,索引原理,数据库设计的范式理论。 6. **软件工程**:软件开发生命周期(SDLC)的各个阶段,需求分析、设计、编码、测试和维护的...
这些容器提供了便利的增删改查操作,以及迭代器进行遍历。 5. **字符串处理**:C++ 提供了 string 类型,可以方便地处理字符串。在 LeetCode 中,字符串问题是常见的题目类型,熟悉 string 类的 API 很重要。 6. *...