数据结构
Adair编程日记
这个作者很懒,什么都没留下…
展开
-
二叉树
#include #include #include #include using namespace std; template class T> struct TreeNode { TreeNode(const T& value = T()) :_value(value) ,_lchild(0) ,_rchild(0)原创 2017-05-05 20:07:25 · 195 阅读 · 0 评论 -
用回溯法递归实现迷宫
#include #define N 19//整个迷宫大小(包括最外层墙壁) char Maze[N][N] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1原创 2017-04-19 22:58:34 · 415 阅读 · 0 评论 -
单链表逆置,反转,并查找倒数第K个结点
typedef struct Node{ Node(const int& value) : m_value(value) , m_pNext(NULL) {} int m_value; Node* m_pNext;}Node,pNode ResList(pNode pHead) { if (pHead == NULL) return N原创 2017-07-17 11:04:52 · 259 阅读 · 0 评论 -
判断俩个链表是否相交,若相交求交点(考虑带环和不带环)
问题描述(链表不带环):一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。 思路:1、碰到这个问题,第一印象是采用hash来判断,将两个链表的节点进行hash,然后判断出节点,这种想法当然是可以的。2、当然采用暴力的方法也是可以的,遍历两个链表,在遍历的过程中进行比较,看节点是否相同。3、第三种思路是比较奇特的,在编程之美上看到的。先遍历第一个链表到他的尾部,然后将尾部的next指原创 2017-07-17 22:12:11 · 824 阅读 · 0 评论 -
删除无头单链表的非尾结点并打印单链表
问题描述:假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。一般链表的删除需要顺着头结点向下找到当前待删节点的前驱节点,然后让前驱节点指向后驱节点就行了。这里,没有头结点,就没办法找到前驱结点。但我们可以采用“狸猫换太子”的做法。我们把当前结点“看成”是前驱结点,把后续节点当做待删结点删除(删除之前,记下后续结点的值),只需原创 2017-07-17 22:25:37 · 311 阅读 · 0 评论