- 博客(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
原创 二叉树的横向显示
#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关注的人