数据结构之循环链表

一 循环链表基础  在单链表中,有了头结点,我们可以在O(1)时间访问到第一个节点,但如果要访问最后一个节点却需要O(n)的时间,因为我们需要对整个链表进行一次遍历。在循环链表中,我们可以借助尾节点来实现,即不用头指针,而是用指向终端结点的尾指针来表示循环链表,这时候无论是查找第一个节点还是最后一个节点都很方便,可以控制在O(1)的时间内,如下图所示。 二 代码实现(1)循环链表初始化templa
阅读本文

数据结构-出栈出现问题

http://weibo.com/p167p324p/230927983026167541932032http://weibo.com/pp20180415PpP/230927983256132845834240??2O18.04-15=dqhttp://weibo.com/pp20180415PpP/230927983119305203785728??2O18.04-15=52http://we
阅读本文

数据结构第三周-顺序表的创建与遍历

#includeusing namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;            typedef int ElemType; #define MAXSIZE 100typedef struct{  ElemType *elem;             //存储空间的基地
阅读本文

线性和非线性的数据结构

数据的逻辑结构分为线性结构和非线性结构。常用的线性结构有:线性表,栈,队列,双队列,数组,串。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。  存储结构是数据的逻辑结构用计算机语言的实现,常见的存储结构有: 顺序存储 , 链式存储 , 索引存储 ,以及 散列存储 。其中散列所形成的存储结构叫 散列表(又叫哈希表) ,因此哈希表也是一种存储结构。栈只是一种抽象数据类型,是一种逻
阅读本文

数据结构学习笔记(2)——链表创建和链表遍历

说明(2018-3-15 20:34:49):1. 开始将pNew挂到pHead后面,会有问题,每个新生成的节点都挂到了pHead后面。2. 然后改为,新建一个pTail尾节点,让它等于pHead,然后每次生成一个新节点,就让这个pTail等于这个新节点,以便下一个新节点能够挂到这个pTail尾节点上,也就是上一个旧节点。  1 #include<stdio.h> 2 #include<mall
阅读本文

C 数据类型

C 数据类型 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 C 中的类型可分为以下几种: 序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型。 2 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 3 void 类型
阅读本文

数据结构1 算法的时间复杂度和空间复杂度

1、算法的概念:算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?有如下的指标:2、衡量算法的指标:(1)时间复杂度:执行这个算法需要消耗多少时间。(2)空间复杂度:这个算法需要占用多少内存空间。  同一个问题可以用不同的算法解决,而一个算法的优劣将影响到算法乃至程序的效率。算法分析的目的
阅读本文

数据结构与算法(C#实现)系列---广义树(一)tkai

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜。据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow、Twitter、Reddit、IEEE Xplore、GitHub、CareerBuilder 等,对 48 种语言进行排行。与其他排行榜不同的是,IEEE Spectrum
阅读本文

2017-7-13&7-18/数据结构与算法之PHP查找算法(哈希查找)

一、哈希查找的定义提起哈希,我第一印象就是PHP里的关联数组,它是由一组key/value的键值对组成的集合,应用了散列技术。哈希表的定义如下:哈希表(Hash table,也叫散列表),是根据关键码值(Key/value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(k
阅读本文

数据结构之二分法查找

(一)二分法查找  二分法查找其实就是折半查找,一种效率较高的查找方法,针对有序数组来查的;当数据量很大适于采用该方法;  主要思想:设查找的数组区间为array[low,high];  1、确定该区间的中间位置K  2、将查找的值T与array[K]进行比较。    1.若相等,则查找成功并返回该位置K;    2.否则确定新的查找区域,继续二分查找,区域确定如下:      (1)  arra
阅读本文

数据结构(四)--队列

数据结构(四)--队列1. 队列的定义队列 (Queue)是一种先进先出(first in first out : FIFO)的线性表。它只允许在表的一端进行插入,在另一端进行删除元素。这和我们平时战队买票很一样。最早进入队列的元素最先离开,在队列中,允许插入的一端叫做队尾(rear),允许删除的一段则称为队头(front).示意图如下:2. 队列的分类队列主要分为两类: 链式队列:链式队列即用链
阅读本文

数据结构——第一章 绪论

任何一个问题一定能分析为逻辑结构中的一种结构,但却能选择不同的存储结构,以得到不同的效率。 用计算机完成处理一个问题需要先确立数据结构,并完成代码编写。步骤应该是: 1.逻辑结构(画在纸,图形上的结构): 按事物间的关系分类:一对一(线性结构)   => 线性表 栈 队列 串一对多(非线性结构)=> 树多对多(非线性结构)=> 图 事物间没有关系:集合 (一般简化为线性结构研究) 2.存储结构(计
阅读本文

数据结构16————图的定义和基本概念

数据结构16————图的定义和基本概念 一.内容: 1.图的定义 2.各种图的相关概念 3.图的ADT 二.图的定义 1.形式化定义 图(Graph)是由顶点的有穷非空集合和顶点直接边的集合组成,通常表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中的边的集合 图中的数据元素,我们称为顶点 图不存在空集,图中不允许没有顶点 任何两个顶点之间都可能有关系,顶点之间的逻辑关系
阅读本文

数据结构第十周项目(一)——验证算法(四)

/*      *Copyright (c) 2017,烟台大学计算机与控制工程学院      *All rights reserved.      *文件名称:项目1-验证算法(4)     *作    者:李庆耀      *完成日期:2017年12月12日      *版 本 号:v1.0      * 问题:      中序线索化二叉树算法的验证    */      代码:#in
阅读本文

数据结构---图的实现

实现图的存储结构; 实现图的深度优先和广度优先遍历 /**************************************************** @Title: 数据结构实验 @Name: <实验7-1> 图的遍历 @Object: [实验目的] 实现图的存储结构; 实现图的深度优先和广度优先遍历 [实验提
阅读本文

数据结构入门学习系列-9(二叉树遍历的算法实现)

二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现三种遍历,则要用栈来模拟实现(递归也是用栈实现的)。下面先简要介绍三种遍历方式的递归实现,再详细介绍三种遍历方式的非递归实现。 一、三种遍历方式的递归实现(
阅读本文

数据结构-栈(应用篇)之快速排序法-C和C++的实现

一、原理解析快速排序法:基本思路是,从第一个元素开始,把所有比它大的元素放在它后面,把所有比它小的元素放前面。然后对它前面和后面的所有元素再做快速排序,直到无法再划分为止。在以下程序案例中我们使用非递归的方式,并借助栈的数据结构实现。(关于栈的基本介绍,请看上一篇:)二、程序解析C语言版本:源码:bool bAirob_QuickSort_int16(int16_t *src,int len) /
阅读本文

数据结构-栈 C和C++的实现

在数据结构中,栈是一种桶状结构,每次往桶里放数据,最后放的数据最先被拿出来,最先放进去的数据最后才能出来(FILO)C语言:一、文件清单:MyStack.h: #ifndef _MYSTACK_H #define _MYSTACK_H #include <stdio.h> #include <stdlib.h> typedef unsigned char bool; #define true 1;
阅读本文