
数据结构
RooKiChen
猛兽总是独行,牛羊才成群结队
展开
-
数据结构--双向循环链表
上个文章写了循环链表是如何实现的,本文的双向循环链表和循环链表类似,只不过是讲每个节点的prior指向上一个节点,再讲尾结点指向头结点,形成了一个环,双向循环链表的优点就是在查找数据时可以进行双向查找,效率比普通链表要高。 双向循环链表中每个节点定义了两个指针,next(指向下一个)和prior(指向上一个)。 增加:在增加结束前的操作和单链表相同,只是在结尾处要讲头节点的prior指向尾节点,尾节点的next指向头节点。详细代码请看下面的Add函数。 删除:删除时要进行判断删除的节点是否是头结点,详情请.原创 2021-05-20 11:25:28 · 649 阅读 · 0 评论 -
数据结构---循环链表
循环链表与普通链表的区别就是将链表的尾节点的下一个指向链表的头节点,同时判断遍历链表结束的条件也会改变,这里可以采用do while的形式进行遍历,具体实现可以参考下面的Output函数。 删除时要考虑两种情况,一是删除中间节点和尾节点,第二个是删除头节点,这里只细说一下删除头节点的情况,删除头节点时需将链表尾节点的指针指向头节点的下一个,然后释放头节点,并将头节点置空 详细代码如下:共有两个类,一个是node类,一个是list类 #include <iostream> #inc..原创 2021-04-30 08:45:46 · 252 阅读 · 0 评论 -
线索化二叉树(排序生成树)
#include <iostream> #include <stdio.h> #include <conio.h> using namespace std; enum class Tag { prior , rear}; // 枚举类型,prior为0,rear为1 // prior代表指向左右节点,rear为线索,代表指向前一个节点 template <class T> class BTNode { public: BTNode() { d原创 2021-04-18 16:01:12 · 330 阅读 · 0 评论