自己动手实现数据结构模板(5):字符串
字符串的实现借助于动态数组。到动态数组实现的链接。
字符串在动态数组的基础上,增加了从C风格的字符串(即以’\0’结尾的字符数组)构造和追加的相关函数,隐藏并重新实现了print函数,重载了<<运算符以使字符串能够直接输出到标准输出流。
具体实现:
#ifndef DTS_ST[......]
字符串的实现借助于动态数组。到动态数组实现的链接。
字符串在动态数组的基础上,增加了从C风格的字符串(即以’\0’结尾的字符数组)构造和追加的相关函数,隐藏并重新实现了print函数,重载了<<运算符以使字符串能够直接输出到标准输出流。
#ifndef DTS_ST[......]
实现了动态增长空间的数组。当数组原空间不足以存储增加的内容时,会重新开辟数组空间并将数据移动到新空间。默认的增长速度为 原空间*2+1 ,再额外+1是为了防止空数组增长出现一直为空的情况(0*2=0)。
该动态数组实现了常用的接口函数(如size,at,append等),重载了可能常用的运算符[……]
栈和队列的实现借助了链表。到链表实现方法的链接。
继承了dtsList,然后在此基础上增加了push、pop等函数来入出栈或队列,增加了返回 栈底和栈顶 或 队头和队尾 的值的函数。
栈:
#ifndef DTS_STACK_HPP #define DTS_STACK_HP[......]
二叉树结点结构:
template <typename T> class dtsBinaryTreeNode{ public: T value;//该结点值 dtsBinaryTreeNode<T>* leftChild;//左孩子结点 d[......]
今天忽然心血来潮,自己动手实现了一个简单的双向链表和基本功能,大致实现了如下功能
dtsListNode为结点类,包括值value、前向指针pre和后向指针next。
dtsList为双向链表,能够通过begin和end函数获得首地址指针和指向最后一个元素之后一个的尾[……]