数据结构
jonson_zc
相信厚积薄发!
展开
-
循环队列
一、基础知识 队列(Queue)是一种限定存取位置的线性表。它只允许在表的一端插入,而在另一端删除。允许插入的一端称为队尾(rear),允许删除的一端叫做队头(front)。每次在队尾加入新元素,加入称为进队,删除称为出队。 队列的这种特性正好与栈相反,叫做先进先出(FIFO,First In First Out)。队列的存储表示也有两种方式:顺序方式和链式方式二、循环队列 队列的顺序存储方式原创 2015-08-27 10:44:48 · 867 阅读 · 0 评论 -
链式队列
队列的另一种存储方式是链表,可以用带头结点的单链表来表示;队列的头指针front指向单链表的头结点,队列的尾指针rear指向单链表的最后一个节点。 出队就是删除第一个元素节点,入队就是在表维增加一个节点;其中链表式的队列模版中有两个数据成员,分别是队头指针front和队尾指针rear,其初始值都指向头节点,头节点后没有元素,表示空队列; 简单实现了下#ifndef NODE_h#define原创 2015-08-27 15:27:37 · 330 阅读 · 0 评论 -
时间复杂度
(1)程序等于算法加数据结构 (2)一个算法中的语句执行次数称为语句频度或时间频度,记为T(n);.一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。在计算时间复杂度的时候,先找出算法的基本操作,然后根据转载 2015-08-12 21:12:06 · 317 阅读 · 0 评论 -
顺序表
基本知识: (1)线性表主要有两种储层方式:顺序存储和链式存储 (2)用顺序存储方式存储线性表称为顺序表,顺序表可以随机访问,它可以通过元素的位置来访问数据元素,存储空间在物理上是连续的;即在逻辑上相邻的数据元素在物理上也必然相邻; (3)线性表的基本操作常见的有:初始化、求长度、取指定元素的值、元素定位、修改指定元素的值、插入、删除、判断表是否为空、表清空等等 (4)在插入和删除时需要移动原创 2015-08-12 21:18:26 · 318 阅读 · 0 评论 -
单链表
基础知识:(1)链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 (2)链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成 (3)每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 (4)但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大 (5)链表有很原创 2015-08-12 21:20:41 · 332 阅读 · 0 评论 -
顺序栈
栈(stack)又名堆栈,它是一种运算受限的线性表(栈、队列、线性表其逻辑结构均是线性的,栈和队列被称为受限的线性表)。对于栈来说,其限制是仅允许在表的一端进行插入和删除运算,这一端被称为栈顶;相对地,把另一端称为栈底;向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素原创 2015-08-18 16:54:59 · 263 阅读 · 0 评论 -
双向循环链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。具体代码实现部分功能:#ifndef GUARD_DBLNODE_h#define GUARD_DBLNODE_h#define NULL 0template<class T>struct原创 2015-08-17 19:02:31 · 393 阅读 · 0 评论 -
链栈实现
实现链式栈,这里用的是不带头节点的单链表,链表的表头表示栈顶,入栈与出栈都在表头进行链式栈的类模版中只有一个数据成员,即top,它为栈顶指针,指向栈顶元素,初始值为NULL,表示空栈#ifndef GUARD_NODE_h#define GUARD_NODE_h#define NULL 0template<class T>struct Node{ T data; Node<T原创 2015-08-21 17:24:48 · 306 阅读 · 0 评论