
算法数据结构学习日记
Hcm_Scu
...
展开
-
数据结构学习日记(5)——单链表的代码实现
链表是顺序表的一种,而单链表是链表中最简单的一种,所以单链表的代码实现逻辑还是比较简单的。#ifndef NODE_H#define NODE_H#include <iostream>using namespace std;class Node{public: int date; //数据域这里定为int型 Node *next; // 这里的指针是指向下一个结点的,所以类型原创 2017-10-09 09:47:10 · 196 阅读 · 0 评论 -
算法竞赛学习日记(1)——“贪心法”
算法是不可能单纯的以方法来概括的,我觉得概括的只是一种人的基本想法而已。对于我这样的算法初学者,在碰到算法编程题的时候不知如何下手,只是有想法寥寥,而不知道应该以何种方法去做下去,所以手足无措。贪心法——只顾眼前的利益,反而得到了最优的解。这本来就是每个人在拿到一个算法题的时候会有的想法,所以归类方法的意义不在于身兼百种方法去一一与题目配对,而在于从一种想法入手,坚持尝试下去,从而真正的尝试出这种想原创 2017-09-29 22:03:32 · 322 阅读 · 0 评论 -
算法竞赛学习日记(2)——区间问题
在拿到选择不相交区间这个问题的时候,我的第一个想法是不知道如何量化这个问题,或者说不知道如何具体地展开成一种计算问题,有n个开区间就有n+1个点,而且是开区间,相邻区间不会相交,那么只需要将数轴上的所有的点升序排序并且取临点相取不就好了吗?但是知道读到分析之后才明白,原来这个问题的区间是已经划分好了的,是取这些区间的时候不能取到相交区间。数轴区间就必然会有顺序问题,所以一定会用到排序。简单的画一个数原创 2017-10-01 10:58:37 · 237 阅读 · 0 评论 -
数据结构学习日记(2)——用栈实现括号匹配
关于怎么用代码写一个栈可以看我的数据结构学习日记(1),这里就用那里写下的栈来作为栈类型#include "MyStack.h"#include <iostream>using namespace std;int main(){ MyStack<char> *pstack = new MyStack<char>(40); MyStack<char> *NeedP原创 2017-10-04 22:15:50 · 257 阅读 · 0 评论 -
数据结构学习日记(1)——栈模板的代码实现
栈的思想在于,着眼于解决刚刚碰到的问题,而将之前碰到的问题先保存下来,放到后面去解决。 比如经典的括号匹配问题就可以用栈来解决。栈模板的代码实现 放在一个头文件中#ifndef MYSTACK_H#define MYSTACK_Htemplate <typename T>class MyStack{public: MyStack(int size);// 复杂对象的栈需要有默认原创 2017-10-04 20:56:17 · 193 阅读 · 0 评论 -
数据结构学习日记(3)——环形队列的代码实现
#ifndef MYQUEUE_H#define MYQUEUE_Hclass MyQueue{public: MyQueue(int QueueCapcity); virtual ~MyQueue(); void ClearQueue(); bool QueueEmpty() const; bool QueueFull() const; i原创 2017-10-05 18:18:55 · 245 阅读 · 0 评论 -
数据结构学习日记(4)——顺序表的代码实现
顺序表示线性表的一种,不像另一种链表那么神秘,顺序表其实离我们很近,它就是一个数组。#ifndef MYQUEUE_H#define MYQUEUE_H#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;class List{public: explicit List(int s原创 2017-10-06 16:24:25 · 210 阅读 · 0 评论 -
算法竞赛学习日记(3)——区间选点问题
数轴上有n个闭区间[ai,bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。 贪心策略: 按照b1<=b2<=b3…(b相同时按a从大到小)的方式排序排序,从前向后遍历,当遇到没有加入集合的区间时,选取这个区间的右端点b。 证明: 为了方便起见,如果区间i内已经有一个点被取到,我们称区间i被满足。 1、首先考虑区间包含的情况,当小区间被满足时大区间一定被满原创 2017-10-12 10:24:42 · 483 阅读 · 1 评论