![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 57
hp_p2
这个作者很懒,什么都没留下…
展开
-
红黑树简单实现
红黑树特点:1.根节点为黑色2.每个红色节点的左右孩子为黑色节点,即无连续的红结点3.每条路径上的黑色节点相等4.最长路径不超过最短路径的二倍创建红黑树,在插入节点后(默认插入节点颜色为红色),要对红黑树进行判断并调整当父节点为红色(以下情况均是父节点为祖父节点左孩子,而父节点为祖父右孩子推理可得)相关代码:bool Insert(const原创 2017-04-10 13:40:56 · 224 阅读 · 0 评论 -
出栈入栈合理性
出栈入栈合理性,用两指针指向两数组,创建一新栈来存储元素。对于入栈数组的指针一直往下走,并入栈,当与出栈数组元素相等时,让栈中的元素pop,还原入栈出栈的过程。如果在这种情况下不处理的话,会导致入栈数组元素一直往下走,若入栈较多元素后连续出栈,会导致判断失误(入栈元素一直往后走,而之前早入栈的元素会没有处理到)。可以让出栈元素往后走并与栈顶元素比较(用栈的size来做循环条件)stack.原创 2017-08-07 23:00:22 · 474 阅读 · 0 评论 -
两个栈实现一个队列
#include#includeusing namespace std;//两个栈实现一队列 栈先进后出templateclass Queue{public: Queue() {} void Push(const T& x) { stack* tmp=NULL; if (!s1.empty())// { tmp = &s1; } else {原创 2017-08-07 23:50:15 · 145 阅读 · 0 评论 -
栈和队列
栈#includeusing namespace std;//栈先进后出 //队列先进先出 template class stack{public: stack() :_arr(NULL) , _size(0) , _capacity(5) { /*for (int i = 0; i < _size; i++) { arr[i] = _a原创 2017-08-07 23:53:20 · 158 阅读 · 0 评论 -
合并两链表
合并两链表,在对两有序链表应该做较详尽的分析1.一链表为空则合并结果为另一链表。2.合并过程中的大小比较。(为减少开辟节点所占空间,可以比较两链表第一个节点元素大小,并将头节点直接赋给新节点)3.两链表长度不同时的处理。List.h#include#include#includetypedef int DataType;typedef struct LinkNode原创 2017-07-25 21:08:42 · 162 阅读 · 0 评论 -
单链表
LinkList.h#include#include#includetypedef int DataType;typedef struct LinkNode{ DataType _data; struct LinkNode* next;}LinkNode,*pLinkNode;typedef struct LinkList{ LinkNode* _pHead;}Li原创 2017-07-25 22:05:07 · 152 阅读 · 0 评论 -
有环链表相关
判断链表是否有环,采用快慢指针相关思想,若无环则不会相遇pLinkNode Check_Loop(pLinkList plist) //快慢指针类似方法,若链表带环则会相遇{ assert(plist); pLinkNode fast = plist->_pHead; pLinkNode slow = plist->_pHead; /*fast = plist->_pHead原创 2017-07-26 12:15:29 · 188 阅读 · 0 评论 -
链表相交及交点求解
对于链表相交要分几种情况1、两无环单链表相交2、一无环与一有环链表不可能相交3、两有环链表相交pLinkNode Noloop_Point(pLinkList plist1, pLinkList plist2){ //两无环链表相交 pLinkNode p1 = Check_Loop(plist1); pLinkNode p2 = Check_Loop(plist原创 2017-07-27 18:42:42 · 268 阅读 · 0 评论 -
约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。void Joseph_Ring(pLinkList plist,int m)//约瑟夫环{ pLinkNode cur = plist->_pHead;原创 2017-07-27 18:46:45 · 229 阅读 · 0 评论