
数据结构
文章平均质量分 55
没有梦想__何必远方
学习党
展开
-
单向循环链表的合并图解
第一步:创建一个临时节点指针,指向链表 L2 的第一个数据节点即:ListNode * p = B->next->next; 第二步:将链表 L2 的最后一个节点 B 指向链表 L1 的 头节点即链表 L1 的最后一个节点 A 指向的节点:B->next = A->next; 第三步:将链表 L1 的最后一个节点 A 指向链表 L2 的第一个数据节点即 A->next = p;刚开始,怎么也搞不原创 2015-05-06 20:11:15 · 6245 阅读 · 5 评论 -
双向链表的插入及删除图解
双向链表的插入第一步:首先找到插入位置,节点 s 将插入到节点 p 之前 第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior; 第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s; 第四步:将节点 s 的后继指向节点 p 即 s->next = p; 第五步:将节点 p 的前驱指向节点 s 即 p->prior =原创 2015-05-06 20:25:54 · 30870 阅读 · 12 评论 -
数据结构——图
昨天晚上写了树的一些基本概念和树的操作以及树的一些应用。 今天来说一说图!基本术语:图—— 一个图(G)定义为一个偶对 (V,E) ,记为 G=(V,E) 。其中: V是顶点(Vertex) 的非空有限集合,记为V(G); E是无序集V&V的一个子集,记为E(G) ,其元素是图的边(Arc)。无向图——每条边都没有方向有向图——每条边都有方向完全图——任意两点都有一条边相连稀疏图——有原创 2015-05-20 10:25:10 · 1520 阅读 · 0 评论 -
数据结构——树
这几天自己又重新看了一遍《数据结构》。 不看不知道,一看吓一跳。以前学的知识有忘记得差不多了。所以,决定以写博客的方式, 将我学到的东西记录下来,就算后面又忘记了也能回来看看。废话不多说,我花了几天将老师上课的课件和书本结合起来看,对数据结构的体系有了自己的一个理解今天就先说一说树和二叉树。基本术语:树——是由一个或多个结点组成的有限集合,其中: ⒈必有一个特定的称为根(ROOT)的结点;原创 2015-05-19 21:50:04 · 835 阅读 · 0 评论 -
数据结构——反转单链表
最近看了《剑指offer》这本书,遇到了一个问题:反转链表 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。 链表结点定义如下:struct ListNode{ int _data; ListNode * _pNext;};解决方案如下:ListNode * ReverseList(ListNode * pHead){ ListNod原创 2015-06-05 22:17:24 · 7013 阅读 · 2 评论 -
数据结构——二叉树的操作
这里我们主要讲二叉排序树的操作:什么是二叉排序树?或者是一棵空树或者是具有一下性质的二叉树: a.若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值; b.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; c.它的左、右子树也分别为二叉排序树Tip : 中序(左根右)遍历二叉排序树会得到一个关键字的递增有序序列二叉排序树的操作——查找查找步骤:若查找的关键字等于原创 2015-05-24 11:43:45 · 1275 阅读 · 0 评论 -
数据结构——归并排序算法
昨天说了快速排序,今天来讲一讲归并排序:什么是归并?归并:将两个或两个以上的有序表组合成一个新有序表。归并操作的步骤:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针超出序列尾将另一序列剩下的所有元素直接复制到合并序列原创 2015-05-26 14:33:05 · 12807 阅读 · 7 评论 -
数据结构——快速排序算法
今天来说一说快速排序:基本思想:任取一个元素 (如第一个) 为轴点所有比它小的元素一律前放,比它大的元素一律后放,形成左右两个子表对各子表重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个注意:每一趟的子表的形成是采用从两头向中间交替式逼近法由于每趟中对各子表的操作都相似,可采用递归算法代码实现:#include <iostream>using namespace std;/原创 2015-05-25 20:14:44 · 3529 阅读 · 0 评论