![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 70
sevenkplus_
这个作者很懒,什么都没留下…
展开
-
HDU1022 堆栈模拟
传送门::: http://acm.hdu.edu.cn/showproblem.php?pid=1022简单的模拟....+stl 水过不过方法很挫啊.#include #include #include #include using namespace std;int main(){ char str1[15],str2[15]; int n,i,k;原创 2012-08-27 20:33:07 · 966 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-快速排序
#include #include int QuickPass(int *array,int low,int high){ //pivotkey记录枢轴的关键字 //low 和 high 是指示指针 //经过一次排序之后枢轴左边的元素小于枢轴,枢轴右边的元素大于枢轴 int pivotkey; *array = *(array+low); pivotkey = *(array+l原创 2012-07-24 18:43:00 · 548 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-Floyd算法
在基于邻接矩阵的图利用floyd算法可以求出每一个定点对之间的最短距离。#include#include#include#define number 10#define MAX 999999int d[number][number];typedef struct node{ int info; //图的节点存放的信息,可随时变动}GraphNode;typedef str原创 2012-07-25 09:31:50 · 597 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-堆排序
//任何一个非终端结点的值都大于等于(或小于等于)它左右孩子的值//输出堆顶的最小值之后,使得剩余n-1个元素的序列重又建成一个堆,则得到n个元素中的次小值。//如此反复执行,便能得到一个有序序列.#include void shift(int a[],int i,int m){ int k,t; t=a[i];k=2*i+1; while(k<m) { if((k<m-1)原创 2012-07-24 20:58:17 · 698 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-dijkstra算法
#include#include#include#define number 20#define MAX 999999int d[number];typedef struct node{ int info; //图的节点存放的信息,可随时变动}GraphNode;typedef struct{ GraphNode matrix[number+1][number+1];原创 2012-07-25 10:50:13 · 848 阅读 · 0 评论 -
acm-dfs入门
接触acm的时间不长,只能从基础开始了。今天试试dfs的题目,很简单就过去了。2203: 简单迷宫 (图)Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4 Solved: 1[Submit][Status][Web Board]Description这是个简单迷宫,请判断是否能走出迷宫。Inp原创 2012-08-08 12:36:36 · 2233 阅读 · 1 评论 -
一步一步复习数据结构和算法基础-冒泡排序
对于长度为n的数组,循环n-1次,将大的数字”沉“到下面。可以得到递增的序列#include#includevoid BubbleSort(int *array,int length){ int i,k; int temp; for(i=1;i<length;i++) //length-1次循环 { for(k=1;k<=length-i;k++) //需要比较的次数原创 2012-07-24 14:11:20 · 453 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-插入排序(2)
希尔排序:将整个待排记录分割为若干子序列,最后用直接插入排序。这样可以使关键字比较小的记录跳跃式向前移动。最后直接插入排序的时候数组以基本有序。#include#includeint list[4] = {7,5,3,1}; //增量表int t=4; //增量个数void ShellInsert(int *array,int length,int dk){ //和插原创 2012-07-24 10:43:34 · 506 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-哈希表的链地址表示
http://blog.csdn.net/flying0033/article/details/7063608散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 下面的哈希表函数使用了(除留转载 2012-07-23 20:03:22 · 818 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-索引顺序表查找
//顺序索引表适合“分块有序”的情况//从第一个子表的关键字开始,向后依次递增;//22 12 13 8 9 20 33 42 44 38 24 48 60 58 74 49 86 53 101 33//以6为分块//每个子表的最大数字为 22 48 86 101 即分块递增#include#include#define N 10#define MAX -1//索引表的数据结构原创 2012-07-23 17:43:53 · 1024 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-斐波那契查找法
view plaincopyprint?/*斐波那契查找法,前提是线性表必须有序,时间复杂度是O(logn)*/ #include const int MAXSIZE = 20; int Fibonacci_Search(int *a, int n, int key); /*用非递归法构造一个斐波那契数组*/ voi转载 2012-07-23 10:13:06 · 2187 阅读 · 1 评论 -
一步一步复习数据结构和算法基础-广度优先搜索
和深搜不同,广搜在访问一个节点之后会访问这个节点周围的所有节点然后扩散出去:这里要用到队列,所以把先前的队列代码直接拿来就用。。。#include#include#include#define number 20typedef int QElemType;typedef int Status;typedef struct node{ int info; //图的节点原创 2012-07-21 21:54:24 · 573 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-链式队列
真是无语,自己写好的队列的代码居然搁置了这么长的时间,拿出来晒一晒把:#include #include typedef int QElemType;typedef int Status;typedef struct QNode{ QElemType data; struct QNode *next;}QNode,*QueuePtr;typedef struct {原创 2012-07-21 21:39:38 · 598 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-prim算法(最小生成树)
#include#include#include#define number 20#define MAX 99999typedef struct node{ int info; //图的节点存放的信息,可随时变动}GraphNode;typedef struct{ GraphNode matrix[number+1][number+1]; //构造邻接矩阵 int ve原创 2012-07-22 17:18:17 · 536 阅读 · 0 评论 -
算法导论--堆排序
以前写过一个堆排序,但是实话实说,根本不知所云。今天看了算法导论 关于堆排序的讲解,就实现了一下。在《算法导论》中关于堆排序的描述是:像合并排序而不像插入排序,运行时间为O(n*logn)。是一种原地排序算法:在任何时间只有常数个数据在数组外面。堆排序操作的重要伪代码:1:保持堆的性质;MAX-HEAPIFY(A,i)1 l <- LEFT(i)2 r <- RI原创 2012-08-07 17:23:57 · 692 阅读 · 0 评论 -
acm-bfs入门(抓住奶牛)
2054: 抓住奶牛!Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 135 Solved: 27[Submit][Status][Web Board]Description不得了,xiaoC的农场里跑出来了一只奶牛,这可是让xiaoC很是揪心啊,于是xiaoC立刻放下了手头的工作,想疯狂的奶牛奋力追去,但说来也怪,xiao原创 2012-08-08 15:52:39 · 2291 阅读 · 0 评论 -
HDU1811 并查集+拓扑排序
http://acm.hdu.edu.cn/showproblem.php?pid=1811 这题非常经典,花了一个下午才攻克.加强自己的基础吧.利用并查集将 '='等号两边的数字并入到一个同一个集合,然后构建邻接表进行拓扑排序.1: 元素出现相等又不想等的情况 矛盾2: 有独立的点 不确定3:拓扑排序时入度为 0 的点有多个 矛盾4: 正确#incl原创 2012-08-24 18:44:36 · 1266 阅读 · 0 评论 -
图--邻接表(建立、深搜、广搜)
博客地址:http://blog.csdn.net/akof1314/article/details/4388722/************************************************************************//* 图的邻接表存储结构转载 2012-07-22 10:17:15 · 2931 阅读 · 0 评论 -
组合博弈基础
文章转自:http://blog.csdn.net/tongyongzh/article/details/6175034博弈论(一):Nim游戏博弈论(二):Sprague-Grundy函数Game theory初步寻找必败态——一类博弈问题的快速解法博弈论(一):Nim游戏重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position转载 2012-08-22 09:01:49 · 995 阅读 · 0 评论 -
用链表写约瑟夫环
约瑟夫环自己以前写过,现在想用数据结构实现一次。先贴上自己先前用数组实现的代码:/*约瑟夫环有n个人(n<=1000),用1,2,...,n编号,顺序排列,并首尾相连围成一圈。从第一个人开始报数(从1到4),凡报到4的人退出圈子,且后面的人继续报数(同样从1到4报数),问最后留下的是原来第几号的那一位输入人数输出最后剩下的人。*/#includeint main(){原创 2012-08-01 12:58:07 · 847 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-双链表
单链表只能直接查找一个节点的后继,而双链表可以同时直接查找一个节点的前驱的后继。#include #include typedef struct node{ int data; struct node *llink,*rlink; //llink 前驱 rlink后继}*Linklist,Node;//初始化双链表void IiniLlist(Linklist*原创 2012-07-26 14:34:40 · 2915 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-深度优先搜索
以下图为例进行深搜:我们以无向图为例由于深度搜索的结果不唯一,我们以 1 为初始搜索顶点,得出的结果是1 2 4 5 6 7 3 8程序如下:#include#include#include#define number 20typedef struct node{ int info; //图的节点存放的信息,可随时变动}GraphNode;type原创 2012-07-21 21:33:03 · 612 阅读 · 0 评论 -
中缀表达式计算器
中缀表达式的计算主要要转换为后缀表达式。例如 中缀表达式->(1+2)*3-4 转换为后缀表达式 12+3*4-至于后缀表达式的计算就很容易了 设定一个栈,然后后缀表达式从左到右一次进栈,如果当前的入栈的是数字就将其压入栈中,如果是运算符,就从栈中弹出两个数字进行相应的运算,然后将运算后的数字压回栈中。当字符串完全处理之后,栈顶就是运算结果P原创 2012-07-28 16:36:02 · 2221 阅读 · 3 评论 -
算法导论--动态规划(装配线调度)
一、装配线调度问题问题:现有两条装配线,Sij表示第i条上完成第j道工序的装配站。汽车完成组装需要依次完成1~n工序。请找出完成装配并离开装配线的最快路线。符号说明:ei:汽车进入装配线i的时间,i=1,2xi:汽车离开装配线i的时间aij:在装配站Sij完成装配需要的时间tij:在装配站Sij完成后离开第i条装配线,进入另一条装配线需要的转移时间注意,转载 2012-08-12 14:26:03 · 1220 阅读 · 0 评论 -
栈实现-迷宫问题
给定一个迷宫。如何走出去?最近有看看栈和队列就想用栈和队列实现,写了半天,终于写出来了。。。// 0 代表此路可走 1 代表此路不通// 只能走四个方向,即上下左右//周围的 111... 代表围墙。。#include#include#define mac 100 //定义栈的大小限制typedef struct{ short int row; //行 short i原创 2012-07-27 16:42:40 · 881 阅读 · 0 评论 -
一步一步复习数据结构和算法基础--kruskal算法
MST--krukal kruakal算法和prim算法相比理解起来比较容易,而且也容易编程实现。kruskal算法的是选择最小权值的边来构造最小生成树,当然要防止在构造最小生成树的时候形成环,这个可以通过并查集来实现。1、对所有的边按照权值升序排列。2、从权值最小的边开始选择,加入到边集合的数组中。同时处理并查集数组。3、依次选择其他边,如果选择的边在并查集中属原创 2012-07-22 21:42:26 · 548 阅读 · 0 评论 -
职工管理系统
node.h#ifndef node_h#define node_h#define NAME 20#define DATA 9#define SEX 3#define S 10#define AN 20typedef struct info { char name[NAME]; char sex[SEX]; char birthday[DATA]; char worksta转载 2012-07-25 19:29:39 · 1410 阅读 · 0 评论 -
数据结构期末作业-哈夫曼文件压缩
自己的大作业,做的很匆忙。本人文笔不好,只是希望我所写的可以为读者提供帮助哈夫曼文件压缩运行环境:vc++ 6.0 / vs2010主要算法:哈夫曼压缩注意:压缩的文本文件和解压缩之后的文本文件都要存放在vc++ 6.0 或者 vs2010 的工程文件夹下面原理:哈夫曼编码思想:①首先遍历要处理的文本文件,得到每个字符的出现的次数;②将每个字符(以其出现次数为权值)分别原创 2012-07-24 21:06:59 · 4570 阅读 · 4 评论 -
一步一步复习数据结构和算法基础-LSD基数排序
#include#includetypedef struct node{ int data; struct node *next;}ListNode;typedef struct Array{ ListNode Node[10]; int length;}Array;Array List;void InitList(){ int i; for(i=0;i<10;i原创 2012-07-24 22:09:24 · 1014 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-图的创建和基本操作(邻接矩阵)
邻接矩阵写起来还是比较简单的。。。。。。#include#include#include#define number 20typedef struct node{ int info; //图的节点存放的信息,可随时变动}GraphNode;typedef struct{ GraphNode matrix[number+1][number+1]; //构造邻接矩阵 in原创 2012-07-21 19:41:41 · 897 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-顺序查找+二分查找
顺序查找和二分查找可以说是查找里面最容易写的算法了:顺序查找:#include#include//顺序查找-从后向前int Search(int *digit,int length,int k){ int pos; digit[0]=k; //如果查找不成功返回0 for(pos=length;pos>=1;pos--) if(*((digit)+pos) == k原创 2012-07-23 09:32:42 · 664 阅读 · 0 评论 -
二叉树重建(根据后序中序重建二叉树)
1:根据二叉树的后续序列和中序序列可以确定唯一的二叉树;2:二叉树遍历顺序 前序遍历;根节点-->左子树-->右子树; 中序遍历:左子树-->根节点-->右子树; 后序遍历:左子树-->右子树-->根节点;下面重建二叉树之后再层序遍历#include#include#includeint post[31],in[31];int m,ele原创 2012-08-05 08:50:44 · 1400 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-栈的应用(2)
先前写了括号匹配,这里再给出两个栈的应用-回文数和进制转换;首先是回文数,回文数理解起来很简单的,但是--我写的太麻烦了。。。。。。看来还是需要加强自己的代码质量,这里权当复习。。。回文数在我的理解中就是中心对称的字符串(assa)。所以如果想用栈来解决回文数的判断我的理解是一半字符串入栈,然后依次和后面一半的字符串进行逐字符的比较。但是要注意对于字符串长度为奇数的字符串,要把中间原创 2012-06-29 19:20:29 · 636 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-栈的简单应用(1)
栈的特点之一是FILO(先进后出),基于这个特点在这里给出栈的部分基础应用:1:括号匹配; 所谓的括号匹配就是一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套, 编写程序判断表达式中的括号是否正确匹配。输入任意一个表达式,判断其中括号是否匹配。 利用栈的特性可以很简单的解决这个问题,对于一个表达式从第一个字符开始处理,如果遇到左括号就入站,如果遇到右括号就与栈顶元素匹配,原创 2012-06-29 18:52:40 · 650 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-顺序串
串是0个或者多个字符组成的有限序列,记作S = ‘123456......n’ (每一个数字代表一个字符)(n >= 0)串的元素可以使字母、数字、其他字符;简单写写串的基础知识。1: 字串:串的任意个字符组成的子序列,例如串‘abcdefg’其中‘cde’就是‘abcdefg’的字串,而‘abcdefg’称为主串。2:串的长度:就是串的元素的个数。3:空串和空格串: 空串是串原创 2012-07-11 17:04:00 · 596 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-栈和队列(2)
前面简单介绍一下栈和队列的概念,慢慢来.还是先写写栈吧.由于前面学习了链表和线性表,所以栈的操作比较容易,先来指针栈吧.指针栈是以数组为基础的数据结构.入栈出栈都基于数组操作.先看看栈的声明: 指针栈的声明:#include #include #define STACK_INIT_SIZE 100 //栈空间的初始分配量#define STACKINCREMENT 10原创 2012-06-26 20:41:53 · 607 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-栈和队列(1)
栈和队列也是重要的数据结构.从数据结构角度来说,栈和队列也是线性表.但是栈和队列的基本操作是线性表的操作子集.可以称之为限定性的数据结构.但是在数据类型上它们和线性表大不相同. 我想还是先学学栈和队列的基本操作吧. 栈: 栈的结构: 栈顶 栈底 对于n个元素,第一个入栈的称之为栈底,最后一个入栈的称之为栈顶. 栈的进出原则是后进先出或者是原创 2012-06-25 19:40:34 · 532 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-循环链表
循环链表是另一种形式的链式存储结构,特点就是链表的为节点指向头结点,从而形成一个环,所以从链表的任意一个节点出发都可以访问整个链表而不像单链表那样必须从头结点开始. 循环链表的操作和单链表类似.差别就是算法之中的结束条件不是 head->next == NULL;而是 head == head->next.当然了循环链表的表示形式有两种:带有头指针和带有为指针如下图所示:原创 2012-06-25 19:17:39 · 579 阅读 · 0 评论 -
一步一步复习数据结构和算法基础-链表(3)
先前复习了链表的基本操作之后,就想对链表的应用进行扩展, 先前链表的基本操作时这些扩展的基础,自己复习一下先基本函数:#include #include #include #define true 1#define false 0typedef struct node{ int data; struct node *next;}list,*linklist;li原创 2012-06-23 12:06:47 · 550 阅读 · 0 评论 -
链表各类操作详解
看了这个才发现自己和别人的差距......但是自己慢慢努力吧链表概述 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又转载 2012-06-23 22:26:03 · 568 阅读 · 0 评论