
数据结构与算法
数据结构与算法的C++实现
ingy
这个作者很懒,什么都没留下…
展开
-
C++描述的数据结构和算法(一)
在程序开发过程中通常需要做到如下两点:一是高效地描述数据;二是设计一个好的算法,该算法最终可用程序来实现。应该重点关注的C++特性:参数传递方式(如传值、引用和常量引用)。 函数返回方式(如返值、引用和常量引用)。 模板函数。 递归函数。 常量函数。 内存分配和释放函数:new与delete。 异常处理结构:try、catch和throw。 类与模板类。 类的共享成员、保护...原创 2020-04-09 14:15:47 · 518 阅读 · 0 评论 -
重新实现memcpy
错误方案dst被移动了,返回的是移动后的dst,而且void指针不存在自增操作,所以显然是错误的void *memcpy1(void *dst, const void *src, unsigned int len){ if(NULL == dst || NULL == src) return NULL; while(len--) *d...原创 2018-09-17 21:25:14 · 261 阅读 · 0 评论 -
两个栈实现队列
先入后出的栈构建先入先出的队列queue.h//用两个栈实现队列#include <iostream>#include <stack>using namespace std;class MyQueue {public: MyQueue(); ~MyQueue(); bool empty() const; void ap...原创 2018-09-17 20:54:53 · 147 阅读 · 0 评论 -
[Data Structure]重新实现Vector类模板
vector模板类是一种动态数组,支持设置长度、末尾添加数据、中间插入数据等操作,管理内存的方式是通过new/delete动态申请释放,本文重新实现一个Vector模板类,包含简单的默认构造、拷贝构造、析构、重新申请内存以及末尾添加元素等功能。1. 默认构造,数组长度为0,容器容量为一个规定的默认值,并为数组申请内存。//构造Vector() : m_size(0), m_capac...原创 2018-12-21 09:25:50 · 221 阅读 · 1 评论 -
[Data Structure] 重新实现List类模板
vector和list的区别:http://www.cnblogs.com/shijingjing07/p/5587719.htmllist是一个常见的容器,采用双向链表实现,所以是非线性存储结构,与vector相比,随机存取的效率低,而插入删除效率高。基于迭代器的List类模板实现,包括双向链表的构造、删除、插入、迭代器的实现等功能。template<class T>...原创 2018-12-27 19:52:29 · 189 阅读 · 0 评论 -
[Data Structure] 重新实现BinaryTree类模板
二叉树(binary tree)是有限个元素的集合(允许为空)。当二叉树非空时,其中有一个称为根的元素,余下的元素(如果有的话)被组成 2个二叉树,分别称为左子树和右子树。和树的主要区别是:二叉树可以为空,树不能为空。二叉树中每个元素都恰好有两棵子树(其中一个或两个可能为空)。而树中每个节点有若干子树且没有左右这样的区分。包含n个节点的二叉树的高度最大为n,最小为log(n+...原创 2018-12-28 21:55:34 · 300 阅读 · 0 评论 -
[Data Structure] 重新实现线性队列
队列是一个线性表,其插入和删除操作分别在表的不同端进行。添加元素的那一端被称为队尾,而删除元素的那一端被成为队首 。因为元素的存取符合先入先出的规则,因此又被称为FIFO(first int first out)。主要属性包括队列数组数组的大小队首的位置队尾的位置主要操作包括队首删除元素队尾添加元素判断空判断满获取队首元素获取队尾元素 构造...原创 2019-01-03 16:14:30 · 119 阅读 · 0 评论 -
[Algrithm]字符串操作之替换字符
要求:将一个字符串中的所有空格替换成%20字符串。思路:难点在于,空格只占用一个字符,而%20要占用三个。所以简单的字符替换肯定达不到要求,只能从其他角度来思考:替换以后的字符串长度发生了改变,那么最好的的办法就是先知道操作完成后的字符串长度。然后再从后往前的遍历字符串,将费空格的字符移动到后面,遇到空格则用%20来填补。//将字符串中的空格替换成为%20#include <...原创 2018-09-13 20:35:52 · 969 阅读 · 0 评论