![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 78
jobsxiao
这个作者很懒,什么都没留下…
展开
-
自己动手写数据结构:Queue类模板的链表实现
#include "MyStack.h" //包含stack模板类头文件template class MyQueue{public: MyQueue():_front(0), _back(0), size(0) {} MyQueue(const MyQueue& q); MyQueue& operator = (const MyQueue& q); bool o原创 2012-08-02 08:58:31 · 613 阅读 · 0 评论 -
自己动手写数据结构:Stack类模板的动态数组实现
#ifndef MYSTACK_H#define MYSTACK_H#include template class MyStack{public: MyStack():val(new T[_CAP]), _size(0), _cap(_CAP) {} MyStack(const MyStack& s); ~MyStack(); void _pop(原创 2012-08-02 08:56:11 · 530 阅读 · 0 评论 -
自己动手写数据结构:双向循环List类模板C++实现(功能较全)
双向循环链表的概念想必大家应该比我清楚呵,在此不多说,主要想总结一下我在编程过程中的两点经验: 第一,如果在链表中插入时仅仅指出直接前驱结点,钩链时必须注意先后次序是: “先右后左”。部分语句组如下:L= new LNode();L->val=e;L->next=p->next; p->next->prev=L;p->next=L; L->p原创 2012-08-04 20:05:37 · 748 阅读 · 0 评论 -
自己动手写数据结构:二叉树BinaryTree类模板C++实现(功能较全)
#ifndef MYBINARYTREE_H#define MYBINARYTREE_Htemplate class BinaryTree{protected: struct TNode { T val; TNode* parent; TNode* left; TNode* right; TNode(T t, TNode* p = 0, TNode* l = 0原创 2012-08-09 17:02:46 · 3934 阅读 · 0 评论 -
自己动手写数据结构:AVLTree类模板实现(插入功能)
重要概念:AVL tree——是一种二叉树,通过对二叉查找树的节点强加平衡约束来避免失衡问题, 特点是树中的每个元素的两棵子树之间的高度之差不超过1,若超过则将执行子树旋转以恢复平衡,旋转方式包括:单旋转和双旋转。#ifndef MYAVLTREE_H#define MYAVLTREE_H#define MAX(a,b) ((a)>(b)?(a):(b))template原创 2012-08-10 16:53:06 · 517 阅读 · 0 评论 -
自己动手写数据结构:使用堆实现PriorityQueue类模板(vector)
重要概念:堆(heap)——是其元素具有键并且满足以下“堆性质”的完全二叉树:从根到叶节点的任何路径上的键都是非增的。堆用于实现优先级队列,因为其允许O(lg N)次插入和删除,这是由于push()和pop()函数是通过遍历穿过堆的从根到叶节点的路径实现的,这种路径并不比树的高度长,它至多是(lg N)。#ifndef MYPRIORITYQUEUE_H#define MYPRIORITY原创 2012-08-10 16:55:31 · 663 阅读 · 1 评论 -
自己动手写数据结构:C++模板类 平衡二叉树 AVL
#ifndef AVLNODE_H#define AVLNODE_H#include using namespace std;template class AvlTree; //声明AvlTree类template class AvlNode{public: friend class AvlTree;//友元类转载 2012-08-10 17:23:58 · 1062 阅读 · 0 评论