数据结构
changhaiSmile
这个作者很懒,什么都没留下…
展开
-
栈的顺序存储结构及其基本运算实现
栈的顺序存储结构及其基本运算实现 栈是一种只能在一端进行插入和删除操作的线性表,主要特点:后进先出。1.初始化栈InitStack(SqStack *&s)void InitStack(SqStack *&s){ s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1;//栈顶指针置为-1 }2.销毁栈 Des原创 2014-08-05 22:24:21 · 2328 阅读 · 0 评论 -
二叉树的先序、中序、后序的遍历
二叉树遍历的思想:1.先序遍历 先序遍历二叉树的过程是: (1)访问根节点; (2)先序遍历左子树; (3)先序遍历右子树。 2.中序遍历 中序遍历二叉树的过程是: (1)中序遍历左子树; (2)访问根节点; (3)中序遍历右子树。 3.后序遍历 后序遍历二叉树的过程是: (1)先序遍历左子树; (2)先序遍历右子树;原创 2014-09-21 09:18:42 · 594 阅读 · 0 评论 -
小猴子下落
小猴子下落时间限制:3000 ms | 内存限制:65535 KB难度:3描述有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果开关原创 2014-09-21 17:14:51 · 647 阅读 · 0 评论 -
汉诺塔(三)
汉诺塔(三)时间限制:3000 ms | 内存限制:65535 KB难度:3描述在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片原创 2014-09-21 17:06:12 · 679 阅读 · 0 评论 -
利用栈求解迷宫问题
利用栈求解迷宫问题源代码:#include#include#define M 8#define N 8#define MaxSize M*Ntypedef struct{ int i;//当前方块的行号 int j;//当前方块的列号 int di; //di是下一个可走的相邻方块的方位号原创 2014-09-11 17:00:21 · 1264 阅读 · 0 评论 -
逆序数的求解
求一个数列的逆序数逆序对:数列a[1],a[2],a[3]…中的任意两个数a[i],a[j] (i,如果a[i]>a[j],那么我们就说这两个数构成了一个逆序对逆序数:一个数列中逆序对的总数如数列 3 5 4 8 2 6 9(5,4)是一个逆序对,同样还有(3,2),(5,2),(4,2)等等那么如何求得一个数列的逆序数呢?方法1:一个一个的数最简单也是最容易想到的方法转载 2014-09-23 07:31:21 · 631 阅读 · 0 评论 -
前缀式计算
前缀式计算时间限制:1000 ms | 内存限制:65535 KB难度:3描述先说明一下什么是中缀式:如2+(3+4)*5这种我们最常见的式子就是中缀式。而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )把括号去掉就是:+ 2 * + 3 4 5原创 2014-09-28 16:53:54 · 565 阅读 · 0 评论 -
树的判定
树的判定时间限制:1000 ms | 内存限制:65535 KB难度:4描述A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edge原创 2014-10-01 17:07:37 · 455 阅读 · 0 评论 -
迪克斯特拉算法(Dijkstra)
//Dijkstra算法void Dijkstra(MGraph g,int v){ int dist[MAXV],path[MAXV]; int s[MAXV]; int mindis,i,j,u; for(i=0;i { dist[i]=g.edges[v][i];//距离初始化 s[i]=0; //s[]原创 2014-10-15 20:25:10 · 1851 阅读 · 0 评论 -
串的模式匹配
串的模式匹配1.串的模式匹配---BF算法typedef struct{ char data[MaxSize];//存放串字符 int length; //存放串长 }SqString; //顺序串类型 int index(SqString s,SqString t){ int i=0,j=0原创 2014-12-04 15:43:57 · 805 阅读 · 0 评论 -
二叉树的建立
//二叉树的创建typedef struct node{ ElemType data; struct node *lchild;//指向左孩子的节点 struct node *rchild;//指向右孩子的节点 }BTNode;#include "btree.h"void CreateBTNode(BTNode *&b,char *str){原创 2014-09-21 08:52:59 · 553 阅读 · 0 评论 -
顺序队中实现队列的基本运算
顺序队中实现队列的基本运算 //(1)初始化队列 void InitQueue(Squeue *&q) { q=(Squeue *)malloc (sizeof(Squeue)); q->front=q-rear=-1; } //(2)销毁队列 void DestroyQueue(Squeue *&q) { free(q); }原创 2014-08-12 20:16:47 · 1202 阅读 · 0 评论 -
利用顺序栈判断一个字符串是否是对称串
bool symmetry(ElemType str[]){ int i; ElemType e; SqStack *st; InitStack(st); for(i=0;str[i]!='\0';i++) Push(st,str[i]); for(i=0;str[i]!='\0';i++) { Pop(st,e); if原创 2014-08-05 22:28:27 · 5024 阅读 · 0 评论 -
栈的链式存储结构及其基本运算的实现
栈的链式存储结构及其基本运算的实现 采用链式存储的栈,规定栈的所有操作都在单链表的表头进行。节点*p进栈的操作是在头结点*s之后插入节点*p,出栈的操作是取出头结点*s之后的节点的data值,并将该节点删除。(1)初始化栈void InitStack(LiStack *&s){ s=(LiStack *)malloc(sizeof(LiStack)); s-ne原创 2014-08-05 22:52:15 · 900 阅读 · 0 评论 -
利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号)
利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号)bool Match(char exp[],int n){ int i=0; char e; bool match=true; SqStack *st; InitStack(st);//初始化栈 while(i { if(exp[i]=='(')//当前字符为左括号,将其原创 2014-08-06 09:53:15 · 6083 阅读 · 1 评论 -
括号配对问题
括号配对问题时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYes 程序代码:利用字符数原创 2014-08-06 10:54:21 · 673 阅读 · 0 评论 -
表达式求值
表达式求值时间限制:3000 ms | 内存限制:65535 KB难度:4描述ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)输入第一行输入一个整数n,共有n组测试数据(n每组测试数原创 2014-08-07 21:55:20 · 640 阅读 · 0 评论 -
中缀式变后缀式
中缀式变后缀式时间限制:1000 ms | 内存限制:65535 KB难度:3描述人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。输入第一行输入一个整数n,共有n组测试数据(n每组测试数据只有一行,是一个长度不超过100原创 2014-08-09 16:42:05 · 647 阅读 · 0 评论 -
中缀式变后缀式
中缀式变后缀式时间限制:1000 ms | 内存限制:65535 KB难度:3描述人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。输入第一行输入一个整数n,共有n组测试数据(n每组测试数据只有一行,是一个长度不超过100原创 2014-08-09 16:38:17 · 834 阅读 · 0 评论 -
Binary String Matching
Binary String Matching时间限制:3000 ms | 内存限制:65535 KB难度:3描述Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as原创 2014-09-18 10:13:12 · 978 阅读 · 0 评论 -
士兵杀敌(一)
士兵杀敌(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。注意,南将军可能会问很多次问题。输入只有一组测试数据第一行是两个整数N,M,其原创 2014-09-19 19:43:32 · 358 阅读 · 0 评论 -
剪花布条
剪花布条Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9295 Accepted Submission(s): 6047Problem Description一块花布条,里面有些图案,另有一块直接可用的小饰条,里原创 2014-12-04 16:22:02 · 627 阅读 · 0 评论