博客作业05--查找

1.学习总结(2分)

1.1查找的思维导图

1.2 查找学习体会

查找有顺序查找,二分查找和分块查找。顺序查找的优点是算法简单,对表的结构无任何要求,但是查找效率低。二分查找是一种效率较高的方法,但是要将表按关键字排序,只适用顺序存储结构。哈希表的平均查找长度是α的函数,而不是n的函数,用哈希表构造查找表时,可以选择适当的装填因子α,使得平均查找长度在某个范围内。

2.PTA实验作业(4分)

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

2.2 设计思路

 静态定义 min = -32768
如果树空 返回true
递归调用左孩子 如果根节点比min大 把它赋值给min
否则 返回false
递归调用右孩子 
返回true
end

2.3 代码截图

2.4 PTA提交列表说明。

2.1 题目2:6-3 二叉搜索树中的最近公共祖先

2.2 设计思路

如果树空 返回ERROR
如果u,v不在树中  返回ERROR
如果u,v在根上  返回key
如果u,v一个在左子树,一个在右子树 返回key
如果u,v都在左子树 返回左递归结果
如果u,v都在右子树 返回右递归结果
end

2.3 代码截图

2.4 PTA提交列表说明。

刚开始的时候没有调用find函数 ,一直在左右孩子的判断条件里修改,后来同学告诉我需要加一个查找函数,这才正确

2.1 题目3:7-1 QQ帐户的申请与登陆

2.2 设计思路

int n
string  choose  qq_num  qq_password
输入n行命令
while n--
输入choose  qq_num  qq_password
if choose等于L
  if QQ号不存在 输出ERROR: Not Exist
  else
    if QQ号与密码不匹配  输出"ERROR: Wrong PW"
    else 输出"Login: OK"
if choose 等于 N
  if QQ号已存在  输出"ERROR: Exist"
  else
    申请新账户 并且密码匹配  输出"New: OK"
end

2.3 代码截图

2.4 PTA提交列表说明。

在选择新老账户的时候我只choose了L,后面用else代替了choose=N,导致答案错误

3.截图本周题目集的PTA最后排名(3分)

3.1 PTA排名

3.2 我的总分:130

4. 阅读代码

作为STL的最主要组成部分--容器,分为向量(vector),双端队列(deque),表(list),队列(queue),堆栈(stack),集合(set),多重集合(multiset),映射(map),多重映射(multimap)。
容器
所在头文件
向量<vector>
双端队列<deque>
表<list>
队列<queue>
堆栈<stack>
集合<set>
映射<map>
算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。<algorithm>是所有STL头文件中最大的一个
迭代器功能(Abilities Of Iterator Gategories)

输入迭代器

Input iterator
向前读

Reads forward
istream

输出迭代器

Output iterator
向前写

Writes forward
ostream,inserter

前向迭代器

Forward iterator
向前读写

Read and Writes forward

双向迭代器

Bidirectional iterator
向前向后读写

Read and Writes forward and

backward
list,set,multiset,map,mul

timap

随机迭代器

Random access iterator
随机读写

Read and Write with random

access
vector,deque,array,string


#include <string>
#include <iostream>
#include <vector>
#include <map>
using namespace std;

class CStudent
{
public :
int nStudentID;
int nAge;
public :
//缺省构造函数——通常为空
CStudent() { }
// 完整的构造函数
CStudent(int nSID, int nA) { nStudentID=nSID; nAge=nA; }
//拷贝构造函数
CStudent(const CStudent& ob) 
{ 
 nStudentID=ob.nStudentID; nAge=ob.nAge; 
}
// 重载“=”
void operator = (const CStudent& ob) 
{
 nStudentID=ob.nStudentID; nAge=ob.nAge; 
}
};

int main(int argc, char* argv[])
{
map <string, CStudent> mapStudent;

mapStudent["Joe Lennon"] = CStudent(103547, 22);
mapStudent["Phil McCartney"] = CStudent(100723, 22);
mapStudent["Raoul Starr"] = CStudent(107350, 24);
mapStudent["Gordon Hamilton"] = CStudent(102330, 22);

// 通过姓名来访问Cstudent类中的成员
cout << "The Student number for Joe Lennon is " << 
(mapStudent["Joe Lennon"].nStudentID) << endl;

return 0;
}
posted @ 2018-05-26 21:23  琼楼玉女  阅读(193)  评论(0编辑  收藏  举报