队列
队列(queue)是一种先进先出的、操作受限的线性表。
ADT 队列 (Queue)
Data
同线性表,但元素只能队尾入,对头出。
Operation
init_queue(*Q) :初始化操作,建立一个空队列Q。
cl...
阅读全文...
数据结构和算法-7-栈的应用
进制转换
栈先进后出的特性刚好符合十进制转二进制的方法:
#include <stdio.h>
#include <stdbool.h>
#define OK true
#define ERROR false
ty...
阅读全文...
阅读全文...
数据结构和算法-6-栈
栈
栈(stack)是一种限定在表的一端进行插入或删除操作的线性表。可以被操作的一端被称为栈顶(top),相对地,把另一端称为栈底(bootom)。
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈...
阅读全文...
阅读全文...
数据结构和算法-5-双向循环链表
双向链表
当我们使用单链表时,会碰到取到某一结点后想访问其前驱节点的情况,这是只能再次遍历才能取到目标结点。这显然非常耗时间还不方便,由此就有了双向链表。
双向链表就是在原先单链表结点的基础上增加了一个指针域,用来存放其直接前驱结点的地址。
对于双向链表...
阅读全文...
阅读全文...
数据结构和算法-4-静态链表
静态链表
我们都知道C语言的强大在于其有指针可以直接操作内存,因此可以将链表完美的实现出来;但在C语言之前的一些语言并没有指针,于是他们就想出了静态链表。
所谓的静态链表就是指用数组来描述链表,这也称作游标实现法。
原理
以静态单链表举例,我们用数组存...
阅读全文...
阅读全文...
数据结构和算法-3-链表和单链表
链表
上篇中讲到顺序存储结构的线性表不适合大量的插入和删除,而链式存储结构的线性表(链表 linked list)刚好可以解决这个问题。
链表的特点是:用一组任意的存储单元存储线性表的数据元素,也就是说这些存储单元在内存中未被占用的任意位置。
为了实现上...
阅读全文...
阅读全文...
数据结构和算法-2-顺序存储线性表
线性表(List)
是指由零个或者多个数据元素组成的有限序列(有顺序,有具体个数,只有一个前驱和一个后驱)。如班级的点名册就是一个比较复杂的线性表。
ADT 线性表(List)
Data
线性表的数据对象集合为 {a1, a2, ... , a...
阅读全文...
阅读全文...
数据结构和算法-1-导论
本系列是C/C++描述编写。
绪论
程序设计=数据结构+算法(Algorithm+Data Structures=Programs)是瑞士计算机科学家尼古拉斯·沃斯在1984年获得图灵奖的一句话。
什么是数据结构
数据结构(data structur...
阅读全文...
阅读全文...