1.学习总结

1.1查找的思维导图

1.2查找学习体会

学习折半查找觉得比较难理解的就是B树和平衡调整,这玩意儿到现在还没理解透彻,树上的例题倒是了解其意,但让我敲代码的话一时半会憋不出来;其中查找如顺序查找和折半查找都是上学期有接触过的,比较简单。哈希表是查找这章我觉得比较新颖的数据结构,存储数据的方式和之前学习的完全不一样,哈希表能够大大节省空间。

2.PTA实验作业

2.1题目一:6-2是否为二叉搜索树

2.1.1设计思路

定义一个静态局部数组a存放数据
if(T为空)
    树T不是二叉搜索树
else
    将树的每个结点按中序遍历存进数组中,相邻元素依次比较,如果为递增序列,则为二叉搜索树

2.1.2代码截图

2.1.3PTA提交列表


2.2题目二:7-1QQ帐户的申请与登陆

2.2.1设计思路

申请STL容器<string,int>QQ1,<string,string>QQ2存放用户信息
定义string类型QQhm和QQmm存放用户账号和密码
while(n--)
    输入申请或者登陆指令、号码和密码
if(登陆老账户)
    如果老账户不存在,输出ERROR:Not Exist
else
    if(输入的账号和密码不匹配)
        输出ERROR:Wrong PW
    else
        输出Login:OK
if(新账户申请)
    if(输入的账号存在)
        输出ERROR:Exist
    else
        将账号和密码信息存进容器QQ1,便于后面用容器QQ2检测

2.2.2代码截图


2.2.3PTA提交列表


输入和输出用scanf和printf即可,用cin和cout会超时

2.3题目三:7-2航空公司VIP客户查询

2.3.1设计思路

定义STL容器huiyuan存放用户信息
定义整型n、k分别存放用户个数和最低航程k
定义整型km存放用户航程和号码
whilie(n--)
    输入用户账号和航程
    if(用户航程小于初始航程)
        用户航程等于初始航程
    用huiyuan存储用户信息
输入要查询人的个数m
while(m--)
    输入会员号码
    if(会员号码不存在)
        输出Not Info
    else
        输出会员行程

2.3.2代码截图


2.3.3PTA提交列表


输入和输出用scanf和printf即可解决运行超时的问题

3.截图本周PTA最后排名

3.1PTA排名

3.2我的总分

145

4.阅读代码

STL容器map的构造

private:  
  //将红黑树重命名  
  typedef rb_tree<key_type, value_type,  
                  select1st<value_type>, key_compare, Alloc> rep_type;  
  rep_type t;  // red-black tree representing map  
public:  
  //再对类型重命名  
  typedef typename rep_type::pointer pointer;  
  typedef typename rep_type::const_pointer const_pointer;  
  typedef typename rep_type::reference reference;  
  typedef typename rep_type::const_reference const_reference;  
  typedef typename rep_type::iterator iterator;  
  typedef typename rep_type::const_iterator const_iterator;  
  typedef typename rep_type::reverse_iterator reverse_iterator;  
  typedef typename rep_type::const_reverse_iterator const_reverse_iterator;  
  typedef typename rep_type::size_type size_type;  
  typedef typename rep_type::difference_type difference_type; 
template <class T1, class T2>  
struct pair {  
  typedef T1 first_type;  
  typedef T2 second_type;  
  T1 first;  
  T2 second;  
  pair() : first(T1()), second(T2()) {}  
  pair(const T1& a, const T2& b) : first(a), second(b) {}  
#ifdef __STL_MEMBER_TEMPLATES  
  template <class U1, class U2>  
  pair(const pair<U1, U2>& p) : first(p.first), second(p.second) {}  
#endif  
}; 

map是以红黑树RB_Tree为底层机制的关联式容器。map的每一个元素都拥有两个值,一个键值(key)和一个实值(value)。它的内部实现是用一个pair来保存这个两个值。所以,map的每一个元素又是一个pair(个人觉得像vector,一个一个的键值对应一个实值相当于vector数组里的每一个下标对应每一个数据)。因为map底部是一棵红黑树,拥有自动排序功能,里面每个键值都是按顺序排列好的,这点限制了我们不能改变里面的简直顺序,否则会破坏map的组织结构

其中stl_map.h中会有这样一句话

typedef pair<const Key, T> value_type; 

他将pair定义成value_type,同时将pair的key声明成const类型,限制了不能随便修改它

5.Git提交记录

 posted on 2018-05-26 21:25  Ljy1999  阅读(144)  评论(0编辑  收藏  举报