
数据结构基础
文章平均质量分 61
主要关于一些常用经典的数据结构
algzjh
这个作者很懒,什么都没留下…
展开
-
数据结构预备知识(一)
C复习1.数据类型:在C语言中:基本类型和构造类型基本类型:整型、浮点型、字符型、双精度型 构造类型:数组、结构、联合、指针、枚举型数据对象:int n=3; int a[3]; a[0]=-1; //整型数据对象char ch=‘A’;//字符类型数据对象对象指针:int *p=&n, *q=a;2.标识符表达式语句:赋值转载 2016-10-09 15:44:14 · 624 阅读 · 0 评论 -
COJ-1008-Horcrux
1008: HorcruxSubmit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 610 Solved: 165 Description A Horcrux is an object in which a Dark wizard or witch has hidden a f原创 2017-05-06 11:54:58 · 744 阅读 · 0 评论 -
中南大学第十一届大学生程序设计竞赛-COJ1896-Symmetry
1896: SymmetrySubmit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 2 Solved: 2 Description We call a figure made of points is left-right symmetric as it is possibl原创 2017-04-24 20:57:39 · 635 阅读 · 0 评论 -
中南大学第十一届大学生程序设计竞赛-COJ1901-赏赐 OR 灾难
1901: 赏赐 OR 灾难Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 2 Solved: 2 Description 大G南征北战终于打下了大片土地成立了G国,大G在开国大典上传召帮助自己南征北战的三大开国元勋小A,小B,小C进殿,并要赏赐三人大量宝物以显示天恩原创 2017-04-26 21:09:04 · 1019 阅读 · 0 评论 -
快排&归并&二分查找
算法实验:#include<iostream>#include<cstring>#include<cmath>#include<ctime>#include<cstdlib>#include<algorithm>#include<iomanip>#include<fstream>#include<map>using namespace std;const int MAXN=1e5原创 2017-05-29 11:06:04 · 655 阅读 · 0 评论 -
OpenJ_Bailian - 4147-汉诺塔问题(Hanoi)
总时间限制: 1000ms 内存限制: 65535kB描述一、汉诺塔问题 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。 问:如何移?最少要移动多少次?原创 2017-06-07 17:42:59 · 788 阅读 · 0 评论 -
POJ2559-Largest Rectangle in a Histogram
Largest Rectangle in a HistogramA histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example原创 2017-07-13 19:03:00 · 307 阅读 · 0 评论 -
hihoCoder1080-更为复杂的买卖房屋姿势
1080 : 更为复杂的买卖房屋姿势时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产。在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政府有关部门针对房价的硬性调控。房价的变化自然影响到小Hi和小Ho的决策,所以他们希望能够知道原创 2017-07-14 20:07:52 · 431 阅读 · 0 评论 -
POJ2104-K-th Number
K-th NumberTime Limit: 20000MS Memory Limit: 65536K Total Submissions: 58596 Accepted: 20333 Case Time Limit: 2000MS DescriptionYou are working for Macrohard company in data structures de原创 2017-08-03 09:26:36 · 314 阅读 · 0 评论 -
HDU6058-Kanade's sum
Kanade’s sumTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 664 Accepted Submission(s): 256Problem Description Give you an array A[1..n]of转载 2017-08-02 08:48:25 · 1084 阅读 · 6 评论 -
主席树-查询区间有多少个不同的数
#include<iostream>#include<cstdio>#include<algorithm>#include<map>#include<cstring>using namespace std;const int MAXN=3e4+5;const int M=MAXN*100;int n,q,tot;int a[MAXN];int T[MAXN],lson[M],rs转载 2017-08-11 19:33:10 · 1265 阅读 · 0 评论 -
四种方法求解Fibonacci数列
第一种方法:记忆化搜索特点:同样的工作只做一次,克服了递归的不足之处#include#includeusing namespace std;typedef long long LL;LL f[100];LL dp(int i){ if(f[i]!=-1) return f[i]; else return f[i]=dp(i-1)+dp(i-2);}in原创 2016-09-02 00:39:17 · 799 阅读 · 0 评论 -
五种方法交换两个整数
关于交换两个整数的方法探究2016年9月1日备注:int 范围 -2^31~2^31-1 即-2147483648~2147483647 long long 范围 -2^63~2^63-1 即 -9223372036854775808~9223372036854775807第一种方法:三变量法特点:通用性强,简洁易懂#includ原创 2016-09-02 01:14:31 · 717 阅读 · 0 评论 -
利用低端哨实现顺序表的查找
顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术。顺序表查找算法优化,在查找方向的尽头放置“哨兵”免去了在查找过程中每一次比较后都要判断查找位置是否越界,当然也可以在末端放置“哨兵”。#includeusing namespace std;/* 顺序查找,a为数组,n为要查找的数组个数,key为要查找的关键字*///元素值从下标1开始in原创 2016-09-25 15:34:37 · 1868 阅读 · 2 评论 -
POJ3264-Balanced Lineup
Balanced LineupTime Limit: 5000MS Memory Limit: 65536K Total Submissions: 52035 Accepted: 24413 Case Time Limit: 2000MS DescriptionFor the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50原创 2017-04-19 16:20:39 · 270 阅读 · 0 评论 -
COJ-1005-Binary Search Tree analog
1005: Binary Search Tree analogSubmit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 908 Solved: 199 Description Binary Search Tree, abbreviated as BST, is a kind o原创 2017-05-10 22:15:33 · 450 阅读 · 0 评论 -
POJ1068
ParencodingsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 25217 Accepted: 14877DescriptionLet S = s1 s2...s2n be a well-formed string of parentheses.原创 2016-11-13 11:31:05 · 488 阅读 · 0 评论 -
线性表的逻辑结构
抽象数据类型LinearListADT LinearList{ 实例 操作 Create(); Destroy(); IsEmpty(); Length(); Find(k,x); Search(x); Delete(k,x); Inser原创 2016-10-07 18:01:44 · 807 阅读 · 0 评论 -
已知进栈序列,求出栈序列
#include#includeint count=0;char a[10];void perm(char a[],int k,int n){ int i,u,v,w,flag; char temp,t[10]; strcpy(t,a); if(k==n) { flag=1; for(u=0;u<=n-2;u++原创 2016-10-09 20:01:33 · 3077 阅读 · 1 评论 -
数据结构的概念
数据结构的概念1.数据结构主要研究非数值计算的程序设计问题中计算机的操作对象、对象之间的关系和操作等。2.数据(data)是对客观事物的符号表示。 数据元素(data element)是数据的基本单位,一个数据元素可以有若干个数据项(data item)组成。 数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集。3.数据结构(data str原创 2016-09-25 16:22:23 · 489 阅读 · 0 评论 -
静态链表
使用游标(cursor)来模拟指针,由程序员自己编写“分配结点”和“回收结点”的过程。每个节点应含有两个域:element域和next域。next域是游标指示器,指示其后继结点在结构数组中的相对位置(即数组的下标),数组的第0个分量可以设计成表的头结点。//文件 CursorList.h,静态链表的定义#ifndef CursorList_#define CursorList_原创 2016-10-22 16:56:33 · 591 阅读 · 0 评论 -
单向链表的应用举例
1.单向链表的倒置思路:取原链表的每一个结点,将其作为第一个结点插入到新链表中。templatevoid LinkedList :: Inverse (){ ListNode *p, *head = new ListNode (); while (first != NULL) { p = first; first = first->link;原创 2016-10-22 17:47:08 · 1918 阅读 · 0 评论 -
数据结构预备知识(二)
二. 类和对象1.类的定义class 类名称 { private: 数据成员; 成员函数; protected: 数据成员; 成员函数;转载 2016-10-12 15:28:15 · 503 阅读 · 0 评论 -
数据结构预备知识(三)
模板(template)通用数据类模版函数 通用函数 2. 类模版 通用数据类型模版函数 通用函数 几个形式上完全相同的函数,只有 参数类型和返回值类型不同,可以 写成通用函数,也叫模版函数。例. int max(int a, int b) {return a>b?a:b转载 2016-10-12 16:40:53 · 324 阅读 · 0 评论 -
数据结构预备知识(四)
类的继承简单继承多重继承多态性和虚函数简单继承1.派生类的定义2.基类成员的引用和访问的规则3.导出类的构造函数4. 覆盖 作用域分辨5.派生类的类型转换6. 导出类的指针简单继承 从一个类可以派生出新的类——派生类或导出类,也叫子类. 原来的类叫基类也叫父类.1.派生类的定义形式 class 新类转载 2016-10-12 17:09:48 · 393 阅读 · 0 评论 -
抽象数据类型
抽象数据类型1.首先回顾一下程序设计语言中的数据类型数据类型(data type)是一个值的集合和定义在这个值集上的一组操作的总称。原子类型:如C/C++语言的整形、字符型等标准类型及指针等简单的导出类型和空类型结构类型:其值是由若干成分按某种结构组成的,因此是可以分解的,并且它的成分可以是非结构的,也可以是结构的,通常是由标准类型派生的。例如,C/C++中的数组、结构等类型。原创 2016-09-28 16:42:34 · 10462 阅读 · 0 评论 -
抽象数据类型的表示与实现
预定义常量和类型//函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INEASIBLE -1#define OVERFLOW -2//Status是函数的类型,其值是函数结果状态代码typedef int Status 数据结构的表示(存储结构)用类型定义(typedef)描述。数原创 2016-09-28 17:05:30 · 1444 阅读 · 0 评论 -
关于模板的一些知识
1.定义函数模板的一般形式为template 通用函数定义或template 通用函数定义class和typename的作用相同,都是表示类型名,二者可以互换。2.template 用类模板来定义对象的一般形式是类模板名对象名(参数表);3.如果在类模板外定义成员函数,应写成类模板形式:template函数类型 类模板名::成员函数名原创 2016-10-15 12:25:11 · 414 阅读 · 0 评论 -
线性表的顺序存储及操作实现
1.数组中的每个位置称为单元(cell)或结点(node),表长为length+1。2.loc(ai)=loc(a1)+(i-1)d (13.顺序表具有按数据元素序号随机存取的特点。4.下面的代码给出了相应的C++类定义,建立抽象类AbstractList的目的是增加软件的重用。定义的模板类中,用户指定元素的数据类型为T。Insert和Delete均返回一个线性表的引用。具原创 2016-10-07 20:10:50 · 747 阅读 · 0 评论 -
单向链表
1.从实现的角度看,链表可分为动态链表和静态链表;从连接方式的角度看,链表可分为单向链表、循环链表和双向链表。2.单向链表的结点结构(1)数据域data(2)指针域link3.我们通常用头指针来标识一个单向链表。头指针为NULL则表示一个空链表。4.一个链表包含了零个、一个或多个结点,因此一个LinkedList的对象包含有零个、一个或多个ListNode的对象。这种关系在面向原创 2016-10-15 15:31:39 · 1389 阅读 · 0 评论 -
循环链表
单向循环链表的结点定义及实现如下面代码所示#ifndef CIRCULAR_NODE_CLASS#define CIRCULAR_NODE_CLASStemplate class CNode{private: CNode *link;public: T data; //构造函数 CNode(void); CNode (const T& i原创 2016-10-15 15:51:46 · 498 阅读 · 0 评论 -
双向链表
用空间换时间下面定义的函数都是基于链表左部的//双向链表的类定义template class DoubleNode {friend DoubleList;private: T data; DoubleNode *left, *right;public: //构造函数1,用于构造头结点 DoubleNode (DoubleNode *pRigh原创 2016-10-15 16:58:02 · 575 阅读 · 0 评论 -
数据结构-树
1、如果函数中需要新建结点,即对二叉树的结构做出修改,就需要加引用;如果只是修改当前已有结点的内容,或仅仅是遍历树,就不需要加引用。2、中序序列可以与先序序列、后序序列、层序序列中的任意一个来构建唯一的二叉树。...原创 2018-03-13 04:37:57 · 194 阅读 · 0 评论