自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟

既然选择了远方便只顾风雨兼程......

  • 博客(108)
  • 收藏
  • 关注

原创 折半插入排序

#include using namespace std;int main(void){ int n,k,mid,midval,low,high,x; cin>>n; k=n; int *a=new int[n]; for(int i=0; i<n; i++) a[i]=k--; for(int i=1; i<n; i++)

2017-07-03 16:01:38 212

原创 插入排序

#include void swap(int &x, int &y){ int temp = x; x = y; y = temp;}void insertion(int a[], int sz){ for(int i=1; i < sz; i++) { int j = i; while(j > 0 && (a

2017-06-22 16:57:08 237

原创 哈希查找

针对某个集体(如您所在的班级)中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。代码:#include #include #include #include #define MAX 78#define NULLKEY 0x7fffffffusing namespace std;typedef struct{ int *elem;

2017-06-22 16:55:26 976

原创 将pair放入优先队列中

#include #include using namespace std;typedef pair P;struct cmp{ bool operator()(const P p1, const P p2) { return p1.second > p2.second; //second的小值优先 }};int main(void){

2017-06-13 20:47:01 6622

转载 STL中vector的用法

vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.     用法:          1.文件包含:                首先在程序开头处加上#include以包含所需要的类文件vector          还有一定要加上using name

2017-06-13 20:45:29 508

原创 STL中pair的用法

pair的类型:   pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。   pair p;   pair p;  pair p; 都可以。。。     应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct,但为了方便就可以使用 c++  自带的

2017-06-13 20:28:49 873

原创 0x3f3f3f3f知多少

0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=21

2017-06-13 19:52:16 6123 1

原创 HDU 1874 迪杰斯特拉

Problem Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 Input本题目包含多组数据,请处理到文件结束。每组数据第一

2017-06-13 19:40:22 239

原创 迪杰斯特拉算法

代码:#include#include#define INF 1<<28#define MAX 300using namespace std;int v,e,s;int graph[MAX][MAX];//图的存储采用邻接矩阵int dist[MAX];//dist表示当前距源点最短距离,最终为最短距离bool visit[MAX];//标记为已找出最短路径的点typedef

2017-06-11 19:25:44 258

原创 拓扑排序

#include #include#define MAX 9999#define M 1000int indegree[MAX];typedef int ElemType;typedef struct //定义一个顺序栈{ ElemType data[M];//栈中最多可放M个元素 int top;//用来存放栈顶元素的下标,top为-1表示栈空} SeqSt

2017-06-11 17:04:14 390

原创 图的邻接表表示法及遍历

来看下面的一个简单的图,           那么这样的一个图,我们应该用什么存储结构来存储它呢?常用的是邻接矩阵和邻接表,这里邻接矩阵不做讲解,如下所有代码都是以邻接表作为存储结构,所以这里就只讲解下邻接表。那么什么是邻接表呢?如何构造呢?      邻接表是一种链式存储。就如上图,一共有四个顶点(分别是A,B,C,D),邻接表就是为这四个顶点的每个顶点建立一

2017-06-11 14:05:16 3623

原创 图的邻接矩阵存储及遍历

图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示图。一个一维的数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:我们来看一个实例,图7-4-2的左图就是一个无向图。我们再来看一个有向图样例,如图7-4-3所示的左图。在图的术语

2017-06-11 11:48:55 4239

原创 二叉树的层次遍历、哈夫曼树及哈夫曼编码的建立

#include #include #define N 100 //叶子结点数#define M 2*N-1 //树中结点总数#define MAXN 0x7ffffffftypedef char ElemType;typedef struct Node{ ElemType data; Node *Lchild,*Rchild;} BiTNo

2017-06-08 21:31:34 1557

原创 建立中序线索树

#include #include typedef char ElemType;typedef struct Node{ int Ltag,Rtag; ElemType data; Node *Lchild,*Rchild;} BiTNode,*BiTree;BiTNode *pre=NULL;BiTree CreateBiTree();//建立二叉树

2017-06-02 21:50:17 850

原创 二叉树的建立及遍历

假设二叉树为:                                        a                              b                 c                                   d                 e                因为程序中要知道叶子结点(终点),所以要将上面

2017-06-02 20:53:03 437

原创 二叉树的横向显示

#include #include typedef char ElemType;typedef struct Node{ ElemType data; Node *Lchild,*Rchild;} BiTNode,*BiTree;BiTree CreateBiTree();//建立二叉树void PrintTree(BiTree T,int h);//二叉树的横向

2017-06-01 22:01:30 2706 1

原创 求二叉树高度

#include #include typedef char ElemType;typedef struct Node{ ElemType data; Node *Lchild,*Rchild;} BiTNode,*BiTree;int depth2=0;BiTree CreateBiTree();//建立二叉树int PostTreeDepth(BiTree

2017-06-01 21:48:37 494

原创 统计二叉树中叶子节点的数目

#include #include typedef char ElemType;typedef struct Node{ ElemType data; Node *Lchild,*Rchild;} BiTNode,*BiTree;int ans=0;BiTree CreateBiTree();//建立二叉树void Leaf1(BiTree T);//后序遍历统

2017-06-01 20:51:03 32613

原创 输出二叉树中的叶子节点

#include #include typedef char ElemType;typedef struct Node{ ElemType data; Node *Lchild,*Rchild;} BiTNode,*BiTree;BiTree CreateBiTree();//建立二叉树void PreOrder(BiTree T);//先序遍历,输出叶子节点

2017-06-01 20:35:31 9114 1

原创 删除链表中重复的元素

#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表void ShowList(Linklist L);//输出链表内容void Del

2017-06-01 19:50:46 633

原创 kmp算法

通过建立一个next数组,指示当某个元素失配时,子串移动到何处再重新匹配。c++代码:#include #include #define MAXN 200using namespace std;void get_next(string T,int *next);//获得next数组int kmp(string S,string T);//返回子串T在主串S中的下标位置,若不存在,

2017-05-30 15:57:48 195

转载 STL中string类的用法总结

要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件,加上using namespace std;string类的构造函数:string(const char *s);    //用c字符串s初始化string(int n,char c);     //用n个字符c初始化此外,string类还支持默认构造函数

2017-05-23 10:54:10 941

原创 循环队列的定义及操作

#include #include #define MAXSIZE 50typedef struct{ int element[MAXSIZE]; int front; //队头指示器 int rear; //队尾指示器} SeqQueue;void InitQueue(SeqQueue *Q);//初始化操作,将Q初始化为一个空的循环队列bool En

2017-05-21 18:32:15 7427

原创 链队列的定义及相关操作

#include #include typedef struct node{ int data; node *next;} Node,*LinkQueueNode;typedef struct{ LinkQueueNode front; //队头指针 LinkQueueNode rear; //队尾指针} LinkQueue;int GetL

2017-05-21 15:54:54 3194

转载 STL中优先队列(priority_queue)的相关操作

基本操作:empty() 如果队列为空返回真pop() 删除对列首元素push() 加入一个元素size() 返回优先队列中拥有的元素个数top() 返回优先队列首元素在默认的优先队列中,优先级高的先出队。(1)优先队列的第一种用法,这是最常用的默认的优先级用法,也就是优先级高的先出队列,例如说一个int优先队列,那么

2017-05-21 13:19:37 710

原创 STL中队列的相关操作

基本操作:push(x) 将x压入队列的末端pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值front() 返回第一个元素(队顶元素)back() 返回最后被压入的元素(队尾元素)empty() 当队列为空时,返回truesize() 返回队列的长度#include #include using

2017-05-21 13:14:53 328

转载 STL中的(list)链表

1 定义一个list#include #include #include using namespace std;int main (void){ list Milkshakes; return 0;}2 使用list的成员函数push_back和push_front插入一个元素到list中#include #include #includ

2017-05-20 20:47:16 1142

原创 链栈的定义及相关操作

#include #include typedef int ElemType;typedef struct linknode{ ElemType data; linknode *next;} Node,*LinkStack;void PrintStack(LinkStack top);//打印栈中的元素void DestroyStack(LinkStack top

2017-05-20 18:31:45 1863

原创 双端顺序栈基本操作

#include #define M 1000typedef char ElemType;typedef struct //定义一个双端顺序栈{ ElemType data[M];//栈区 int top[2];//top[0]和top[1]分别为两个栈顶指示器} SeqStack;void InitStack(SeqStack *s)//创建一个双端顺序栈{

2017-05-20 17:19:03 1562

原创 顺序栈的定义及相关操作

#include #define M 1000typedef char ElemType;typedef struct //定义一个顺序栈{ ElemType data[M]; int top;} SeqStack;void InitStack(SeqStack *s)//创建一个栈{ s->top=-1;}bool Push(SeqStack *

2017-05-20 15:25:30 11757 2

原创 STL中stack(栈)的用法

stack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不

2017-05-20 14:01:20 6055

原创 双向链表的插入与删除节点

#include #include typedef struct linknode//定义双向链表{ int data; linknode *prior,*next;} Node,*Linklist;Linklist Createlist(int n);//建立双向链表void Addnode(Linklist L,int i,int x);//向链表中的第i个位置

2017-05-20 13:58:27 2751

原创 双向链表的查找

#include #include typedef struct linknode//定义双向链表{ int data; linknode *prior,*next;} Node,*Linklist;Linklist Createlist(int n);//建立双向链表int Find(Linklist L,int x);//在链表中查找值为x的下标void Sh

2017-05-20 13:21:14 4203 2

原创 双向链表的建立与输出

#include #include typedef struct linknode//定义双向链表{ int data; linknode *prior,*next;} Node,*Linklist;Linklist Createlist(int n);//建立双向链表void Showlist(Linklist L);//输出双向链表int main(void

2017-05-20 11:43:04 3794

原创 合并两个循环单链表

#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;Linklist CreateList_end(int n);//建立循环单链表Linklist Merge(Linklist RA,Linklist RB);//合并两个循环单链表void Show

2017-05-20 10:31:55 1864

原创 单链表的排序与销毁

#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表void Sort(Linklist L);//冒泡排序void ShowList(

2017-05-18 20:46:30 726

原创 建立循环单链表

#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;Linklist CreateList_end(int n);void ShowList(Linklist L);int main(void){ Linklist L1; int n;

2017-05-18 19:48:20 4778 1

原创 合并两个有序单链表

#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表Linklist MergeLinklist(Linklist LA,Linklist

2017-05-18 18:48:42 510

原创 向单链表中插入、删除节点

#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表void ShowList(Linklist L);//输出链表内容void Add

2017-05-18 18:04:54 1338 2

原创 单链表的查找

单链表查找可分为按值查找和按序号查找。代码:#include#include typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表Linklist findval(

2017-05-18 17:48:54 1030 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除