数据结构
进击的横打
此人不懒,但也什么都没有写
展开
-
数据结构之冒泡排序
#include using namespace std;//依次比较相邻的两个数,将大数放在前面,小数放在后面。//即首先比较第1个和第2个数,将大数放前,小数放后。//然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,//直至比较最后两个数,将大数放前,小数放后,//此时第一趟结束,在最后的数必是所有数中的最小数。重复以上过程//小数往后放,相当于气泡往上原创 2009-05-16 16:14:00 · 3828 阅读 · 2 评论 -
[数据结构]第四章--串(读书笔记1)
第四章-串□4.1 串类型的定义由一个或者多个空格组成的串称为空格串(blank string),零个字符的串称为空串(null string)。串(string)是由零个或多个字符组成的有限序列。称两个串是相等的,当且仅当这两个串的值相等。这就是说只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等。串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。在线性表中原创 2013-04-06 10:28:46 · 1153 阅读 · 0 评论 -
[数据结构]第四章--串(读书笔记2)
第四章-串□4.2 串的表示和实现// PROJECT04-02.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "c1.h"/*----------------------------------------串的堆分配储存表示------------------------------------------原创 2013-04-06 16:55:25 · 754 阅读 · 0 评论 -
[数据结构]第五章-数组和广义表(读书笔记3)
第五章-数组和广义表5.4 广义表广义表是线性表的推广,也有人称其为列表(lists,用复数形式以示与统称的表list的区别)。由于广义表中的数据元素可以具有不同的结构(或是原子,或是列表),因此难以用顺序存储结构表示,通常采用链式存储结构,每个元素可用一个结点表示。(1)列表是一个多层次的结构。除空表的表头指针为空外,对任何非空列表,其表头指针均指向一个表结点,且该结点中的h原创 2013-03-25 06:54:40 · 1884 阅读 · 0 评论 -
[数据结构]第五章-数组和广义表(读书笔记2)
第五章-数组和广义表5.3.2 稀疏矩阵十字链表:是有向图的另一种链式存储结构。当矩阵的非零元个数和位置在操作过程中变化较大时,就不宜采用顺序存储结构来表示三元组的线性表。对这种类型的矩阵,采用链式存储结构表示三元组的线性表更为恰当。在链表中,每个非零元可用一个含5个域的结点表示,其中i,j和e这三个域分别表示该非零元所在的行,列和非零元的值,向右域right用以链接同一行中下一个非零元,原创 2013-03-25 06:48:07 · 1035 阅读 · 0 评论 -
[数据结构]第六章-树和二叉树(读书笔记1)
第六章-树和二叉树6.1 树的定义和基本术语树(Tree)是n(n>=0)个结点的有限集。树的结构定义是一个递归的定义。即在树的定义中又用到了树的概念。每一个集合本身又是一棵树,并且称为根的子树。1.结点拥有的子树称为结点的度(Degree)。度不为零的结点称为非终端结点或者分支结点。2.树的度是树内各结点的度的最大值。3.同一个双亲的孩子之间互称兄弟(Sibling)。4原创 2013-05-01 17:18:27 · 952 阅读 · 0 评论 -
[数据结构]第六章-树和二叉树(读书笔记2)
6.3 遍历二叉树和线索二叉树在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理。这就提出了一个遍历二叉树(traversing binary tree)的问题。由于二叉树是一种非线性结构,每个结点都可能有两颗子树,以便使二叉树上的结点能排列在一个线性队列上。从而便于遍历。遍历是二叉树各种操作的基础,可以在遍历过程中对结点进行各种操作,如:对于一原创 2013-05-05 11:17:45 · 1162 阅读 · 0 评论 -
[数据结构]第六章-树和二叉树(读书笔记3)
线索二叉树二叉树遍历的缺点:当以二叉树链表作为存储结构时,只能找到结点的左右孩子信息,而不能直接得到结点在任一序列中的前驱和后继信息,这种信息只有在遍历的动态过程中才能得到。如何保存这种在遍历过程中得到的信息呢?一个最简单的办法是在每个结点上增加两个指针域fwd和bkwd,分别指示结点在任一次序遍历时得到的前驱和后继信息。二叉链表作为二叉树的存储结构,叫做线索链表,其中指向结点前驱和后原创 2013-07-06 21:20:02 · 898 阅读 · 0 评论 -
[数据结构]第六章-树和二叉树(读书笔记4)
6.4 树和森林人们曾使用多种形式的存储结构来表示树。下面是三种常用的数据结构:双亲表示法:利用了每个结点只有一个双亲的性质,便于查找双亲,Parent(T,x)操作可以在常量时间内实现。 缺点:找孩子要进行多次遍历。#define MAX_TREE_SIZE 100typedef struct PTNode{//结点结构 TElemType data;原创 2013-10-06 16:41:04 · 1296 阅读 · 0 评论 -
[数据结构]第七章-图(读书笔记1)
第七章--图图(Graph)是一种较线性表和树更为复杂的数据结构。对于无向图,e的取值范围是0到1/2n(n-1),有1/2n(n-1)条边的无向图称为完全图(Completed graph)。有很少的边或弧的图称为稀疏图(Sparse graph)。反之称为稠密图(Dense graph)。有时图的边或弧具有与它相关的数,这种与图的边或弧相关的数叫做权(Weight)。这些权可以表示从一原创 2013-10-06 16:53:30 · 1508 阅读 · 0 评论 -
[转]伽罗华域
GF(2m)域当m=8时,本原多项式为P(x) = x8 + x4 +x3 + x2 + 1 .这个很重要,因为一切化解都来源与此式。在伽罗华域中,加法等同于对应位异或,所以现在把α定义为P(x) = 0的根,即 α8+α4+α3+α2+1 = 0 即可以得到 α8=α4+α3+α2+1接着先给出下表付推导过程 下面就按以下规则进行乘法运算 0转载 2013-03-20 20:35:34 · 2642 阅读 · 0 评论 -
[数据结构]第五章-数组和广义表(读书笔记1)
第五章-数组和广义表数组和广义表可以看成是线性表在下述含义上的扩展:表中的数据元素本身也是一个数据结构。5.1 数组的定义当n=1时,n维数组就退化为定长的线性表。反之,n维数组也可以看成是线性表的推广。数组一旦被定义,它的维数和维界就不再改变。typedef ElemType Array2[m][n];等价于typedef ElemType Array1[n];typ原创 2013-03-12 20:13:48 · 1714 阅读 · 0 评论 -
[数据结构]第三章-栈和队列(读书笔记3)
第三章-栈和队列□3.4 队列和栈相反,队列(queue)是一种先进先出(first in first out)的线性表,它只允许在表的一端进行插入,而在另一端删除元素。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。队列在程序涉及中也经常出现。一个最经典的例子就是操作系统中的作业排队。双端队列(deque):除了栈和队列之外,还有一种限定性数原创 2013-02-09 10:54:03 · 857 阅读 · 0 评论 -
数据结构之快速排序
#include using namespace std;// 快速排序的实现基于分治法,具体分为三个步骤。假设待排序的序列为L[m..n]。// 分解:序列L[m .. n]被划分成两个可能为空的子序列L[m .. pivot-1]和L[pivot+1 .. n],// 使L[m .. pivot-1]的每个元素均小于或等于L[pivot],同时L[pivo原创 2009-05-16 15:54:00 · 5013 阅读 · 4 评论 -
[数据结构]第一章--绪论(读书笔记)
第一章--绪论□1.1 什么是数据结构为了编写出一个好的程序,必须分析待处理的对象的特征以及各处理对象之间存在的关系,这就是数据结构。数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。数据结构是介于数学,计算机硬件,计算机软件三者之间的一门核心课程。它不仅是一般程序设计的基础,而且是设计和实现编译程序,操作系统,数据库系统及其它系统程序和原创 2013-01-03 14:05:38 · 1010 阅读 · 0 评论 -
[数据结构]第二章--线性表(读书笔记1)
第二章--线性表2.1 线性表的类型定义□什么是线性表结构的特点存在唯一的一个被称作第一个的数据元素。存在唯一的一个被称作最后一个的数据元素,除第一个之外,集合中的每个数据元素均只有一个前驱也均只有一个后继。□什么是线性表线性表(linear_list)是最常用且最简单的一种数据结构,简言之一个线性表是n个数据元素的有限序列。在稍复杂的线性表中,一个数据元素可以由若干个数据项(原创 2013-01-23 14:14:29 · 1193 阅读 · 1 评论 -
[数据结构]第二章--线性表(读书笔记3)
2.3 线性表的链式表示和实现□静态链表有时,也可借用一维数组来描述线性表,同时用游标(指示器cur)代替指针指示结点在数组中的相对位置。数组的第0分量可看成头结点,其指针域指示链表的第一个结点。这种存储结构仍需要分配一个较大的空间,但在作线性表的插入和删除操作的时候不需移动元素,仅需修改指针,故仍有链式结构的主要优点。为了和指针型描述的线性链表相区别,我们给这种用数组描述的链表起名叫原创 2013-01-23 15:34:30 · 796 阅读 · 0 评论 -
[数据结构]第二章--线性表(读书笔记2)
2.3 线性表的链式表示和实现□什么是线性表的链式表示线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。线性链表的最后一个结点的指针为空(NULL)。若线性表为空表,则头结点的指针域为"空"。删除结点:删除指针P所指结点后的结点。p->next = p->next->next;如何删除首结点:可以加一个虚拟头结点。原创 2013-01-23 15:20:58 · 866 阅读 · 1 评论 -
[数据结构]第二章--线性表(读书笔记4)
LinkList.h#include "c1.h"/*具有实用意义的线性链表,一个带头结点的线性链表*/typedef struct LNode{/*结点类型*/ ElemType data; struct LNode *next;}*Link,*Position;typedef struct{/*链表类型*/ Link head,tail;/*分别指向线性原创 2013-01-23 15:42:52 · 824 阅读 · 0 评论 -
[数据结构]第三章--栈和队列(读书笔记1)
第三章--栈和队列栈和队列是操作受限的线性表。因此可称为限定性的数据结构。□3.1 栈栈是限定仅在表尾进行插入或删除操作的线性表。因此对栈来说表尾端有其特殊含义,称为栈顶(top),相应地表头端称为栈底(bottom)。不含元素的空表称为空栈。栈又称为后进先出(last in first out)的线性表(LIFO结构)。□3.1.2 栈的表示和实现顺序栈,即栈的顺序存储结构是原创 2013-01-26 15:44:54 · 890 阅读 · 0 评论 -
[数据结构]第三章--栈和队列(读书笔记2)
第三章--栈和队列□3.2.4 迷宫求解由于计算机解迷宫时,通常用的是"穷举求解"的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走,否则沿原路退回,换一个方向再继续探索。直至所有可能的通路都探索到为止。求迷宫中一条从入口到出口的路径的算法可以简单描述如下:do{ 若当前位置可通, 则{ 将当前位置插入栈顶; 若该位置是出口位置,则结束; 否原创 2013-01-27 15:54:16 · 972 阅读 · 0 评论 -
[数据结构]第七章-图(读书笔记2)
7.2.2 邻接表邻接表(Adjacency List)是图的一种链式存储结构。在邻接表中,对图中每个定点建立一个单链表,第i个单链表中的结点表示依附于顶点v的边。每个结点由3个域组成,其中邻接点域(adjvex)指示与顶点v邻接的点在图中的位置,链域(nextarc)指示下一条边或弧的结点。数据域(info)存储和边或弧相关的信息,如权值等。#include "stdafx.h"#i原创 2013-10-06 17:14:25 · 1177 阅读 · 0 评论