算法与数据结构
风再起时与不羁的风
没有人天生优秀,但我们有一颗执着向上的心!
展开
-
队列的链式存储及实现
在队列的顺序存储中,我们看到了循环队列面临着数组可能溢出的问题。而对于队列的链式存储来说,则不存在队列长度的问题。队列的链式存储结构是在线性表链式存储基础上,添加了两个指针:头指针(front)和尾指针(rear)。front指向链表的头结点,而rear指向链表的最后一个节点。当front与rear指针重合时即front = rear时,我们就认为队列为空。由于队列元素的添加是在运行时分配内存原创 2015-04-17 22:28:13 · 1279 阅读 · 0 评论 -
链表的翻转
链表的翻转对于一个链式存储的单链表来说,只能从头部依次访问后续的所有节点。链表的翻转是指链表中节点的后继指针将指向前继节点。例如,翻转前的链表如下图所示: 翻转后的链表如下图所示: 链表翻转的思路: 1.如果链表为空,则返回空指针,否则返回翻转后链表的头指针; 2.定义三个指针p、q、s,分别指向前继节点、当前节点、后继节点,让q->next指向前继节点p,完成一次翻转。接着让p、q原创 2015-04-16 13:39:13 · 506 阅读 · 0 评论 -
队列的顺序存储实现—循环队列
队列(queue)是一种只允许在一端插入元素,而在另一端删除元素的线性表。它是一种先进先出(First In First Out,FIFO)的线性表。我们把允许插入的一端称为队尾,允许删除元素的一端称为队头。由于队列也是一种线性表,所以队列的实现也有顺序存储和链式存储这两种实现。当队列顺序存储时,入队列的操作所需要的时间复杂度为O(1),而出队列的时间复杂度为O(n),因为删除队头元素,需要将后面原创 2015-04-17 21:37:40 · 5681 阅读 · 0 评论 -
线性表
线性表是一种比较简单且常用的数据结构。简单来说,线性表(List)是零个或多个数据元素的有限序列。首先,线性表的元素的个数是有限的;其次,线性表中各个元素的位置有先后顺序。线性表的主要操作有:初始化、判断一个线性表是否为空、清除线性表、获取线性表元素、删除线性表元素、插入元素到线性表、获取线性表长度等操作。同时线性表根据元素存储方式,可以大致分类顺序存储和链式存储着两种结构。线性表的顺序存储结构是原创 2015-04-15 17:20:56 · 481 阅读 · 0 评论 -
栈
这里说的栈是指数据结构中的栈,而不是只内存布局中的栈。栈也是一种线性表,只不过栈是限定在表尾一端插入和删除操作。栈具有后进先出的特点,即Last In First Out。我们在许多应用中可以看到栈的影子,例如递归调用。我们把允许插入和删除的一端称为栈顶,另外一端则称为栈底。没有元素的栈称为空栈。栈对应的主要操作有:初始化一个栈initStack、判断一个栈是否为空栈stackEmpty、压入一个元原创 2015-04-16 15:39:03 · 376 阅读 · 0 评论