数据结构算法
杨玉庆
这个作者很懒,什么都没留下…
展开
-
算法----------------------------链表
双向链表 循环单链表的出现, 虽然能够实现从任意节点出发沿着链能够找到其前驱结点,但时间耗费是O(n)。如果从表中快速确定某一个节点的前驱 ,另一个解决办法就是在单链表的每个节点里面在增加一个指向其前驱的指针域prior。这样形成的链表就有两条方向不同的链,我们课称之为双向链表 ()。双向链表的结构定义如下: typedef struct DNode {转载 2016-10-26 16:25:08 · 262 阅读 · 0 评论 -
二叉树
二叉树的顺序存储结构就是用一维数组存储二叉树中的节点,并且节点的存储位置,也就是数组的下标要能体现节点之间的逻辑关系。—–>一般只用于完全二叉树 链式存储—–>二叉链表 定义: lchild | data | rchild(两个指针域,一个数据域) typedef struct Node { ElemType data; struct Node *lchild, *rchild;转载 2016-10-26 16:27:09 · 227 阅读 · 0 评论 -
”后进后出“栈
栈的定义: 栈是限定仅在表尾进行插入或删除操作的线性表,因此表尾端成为栈顶,相应的,表头端成为栈底,不含有任何元素的栈称为空栈。 栈的修改遵循后进先出的原则,因此栈又称为后进先出的线性表,简称LIFO结构。 栈一般采用数组作为其存储结构,这样做可以避免使用指针,简化程序,当然数组需要预先声明静态数据区的大小,但这不是问题,因为即便是频繁进出入栈操作,任何时刻栈元素的实际个数也不会很多,为栈预转载 2016-11-09 14:42:16 · 317 阅读 · 0 评论