数据结构
Christlxl
快乐工作,认真生活。
展开
-
单链表
//无论单链表还是双链表,节点插入都遵循先立后破的原则,即新节点指针先指向原有节点,然后再将原有节点指针指向新节点 //操作时,需要注意链表的头尾节点 import java.util.*; import java.io.*; //头结点,链表是否为空,当前节点,链表长度,添加节点, public class linklist{ public int len=1;//可以没有 public N原创 2016-07-22 23:32:14 · 265 阅读 · 0 评论 -
栈(数组实现)
//栈,只允许在栈顶进行插入和删除操作,栈顶指针top:栈为空top=-1; 栈底top=0; //首先初始化栈,包括栈顶指针置-1,指定栈大小 import java.util.*; import java.io.*; class TestStack{ private int[] data;// private int top;//栈顶指针 /*初始化栈,栈顶指针置-1,栈大小*/原创 2016-07-22 21:21:28 · 329 阅读 · 0 评论 -
二叉树及常见操作
原文地址 一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 满二叉树:所有终端都在同一层次,且非终端结点的度数为2。 在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。 完全二叉树:除了最转载 2016-08-27 11:43:38 · 710 阅读 · 0 评论 -
队列
//队列(循环队列),只能在一段进行插入,另一端进行删除的操作受限的线性表 //属性:队列长度len, 数据(数组),头指针和尾指针,头指针删除,尾指针添加 //方法:初始化,入队,出队 //普通队列存在假溢出问题(尾指针到大队尾,无法继续添加元素,但队列中却仍有空位),为此可将队列看成一个环 //尾指针和头指针都从0开始,尾指针到MAX-1后,若再添加元素,尾指针置0 //关键点:1,Q.tai原创 2016-07-22 21:15:49 · 290 阅读 · 0 评论 -
求有环单链表中的环长、环起点、链表长
求有环单链表中的环长、环起点、链表长 1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slo转载 2016-08-26 10:38:53 · 324 阅读 · 0 评论 -
理解递归
递归本质: 例如:给出一个值4267, 我们需要依次产生字符‘4’, ‘2’, ‘6’, ‘7’. 分析递归的工作原理: 第一步:当函数刚开始执行时,堆栈的内容如下: 第二步:执行除法运算之后,堆栈的内容如下: 第三步:接着,if语句判断出p的值非零,所以对该函数执行递归调用。当这个函数第二次被调用之初,堆栈内容如下转载 2016-08-11 21:37:36 · 522 阅读 · 0 评论 -
二叉查找树--插入、删除、查找
原文地址 二叉查找树是满足以下条件的二叉树:1.左子树上的所有节点值均小于根节点值,2右子树上的所有节点值均不小于根节点值,3,左右子树也满足上述两个条件。 二叉查找树的插入过程如下:1.若当前的二叉查找树为空,则插入的元素为根节点,2.若插入的元素值小于根节点值,则将元素插入到左子树中,3.若插入的元素值不小于根节点值,则将元素插入到右子树中。 二叉查找树的删除,分三种转载 2016-09-27 10:26:01 · 340 阅读 · 0 评论