C++ 算法02算法设计的基础

1.程序的基本结构

  <1>顺序执行

  <2>循环、递归结构  (循环初始化、循环体、循环条件)

对九宫格进行遍历

for(int i = 0; i < 9; i++)
{
    int row = i / 3;
    int col = i % 3;
    game->cells[row][col].fixed = false;
}

递归方式实现二叉树查找算法

bool FindTNode(TNODE *tr, int key)
{
    if(tr == NULL)
        return false;
    if(tr->key == key)
        return true;

    if(key < tr->key)
        return FindTNode(tr->left, key);
    else
        return FindTNode(tr->right, key);
}

  <3>分支和跳转 if case

2.算法的实现与数据结构

  <1>基本数据结构在算法设计中的总用

    数组(array)

    链表(linkde list)

    栈 (stack)

栈举例

bool IsMatchBrackets(const std::string& express)
{
    std::stack<std::string::value_type> epStk;
    std::string::size_type i;
    for(i = 0; i < express.length(); i++)
    {
        if(IsLeftBrackets(express[i]))
        {
            epStk.push(express[i]);
        }
        if(IsRightBrackets(express[i]))
        {
            if(epStk.empty())
                return false;
            epStk.pop();
        }
    }

    return epStk.empty();
}

    队列 (queue)

  <2>复杂数据结构在算法设计中的应用

    树 (tree)

    集合 (set)

    哈希表(hash)与映射(map)

    图(graph)

3.数据结构和数学模型与算法的关系

原文地址:https://www.cnblogs.com/sailifsh-lyh/p/10867669.html