简体   繁体   English

深度优先搜索算法的实现

[英]Depth-first search algorithm implementation

The following C++ Depth-first search program won't compile. 以下C ++深度优先搜索程序无法编译。

#include <iostream>
using namespace std;

class Stack
{

private:
      const int size=20;
      int *st;
      int top;
public :
      Stack(){
    st =new int[size];
    top=-1;

      }
      ~Stack(){
          delete[] st;
          top=-1;
      }
      void push(int j){
          st[++top]=j;
              }
      int pop(){
          return st[top--];
      }
      int peek(){

          return st[top];

      }
       bool empthy(){
           return (top==-1);

       }
};
class Vertex{
public:
    char  label;
    bool visited;
public:
    Vertex(){


    }
    Vertex(char lab){
        label=lab;
        visited=false;

    }
    };
class Graph{
private:
      const int maxvertex=20;
      Vertex* vertexlist;
      int **adj;
        int nverts;
        Stack *stack;
public:
    Graph(){
    vertexlist=new Vertex[maxvertex]; 
    adj=new int*[maxvertex];
     for (int i=0;i<20;i++)
          adj[i]=new int[maxvertex];
     nverts=0;
      for (int i=0;i<maxvertex;i++){
           for (int j=0;j<maxvertex;j++){
               adj[i][j]=0;
           }
           }

         stack=new Stack();
    }
    void add(char lab){

        vertexlist[nverts++]=new Vertex(lab);
    }1




};
int main(){








    return 0;
}

Here are the compilation errors I am getting: 这是我遇到的编译错误:

>   6   IntelliSense: no operator "=" matches these
> operands  c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 76  23  DFS     7   IntelliSense: expected a
> declaration   c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 77  3   DFS Error   1   error C2864:
> 'Stack::size' : only static const integral data members can be
> initialized within a class    c:\users\datuashvili\documents\visual
> studio 2010\projects\dfs\dfs\dfs.cpp  8   1   DFS Error   3   error C2864:
> 'Graph::maxvertex' : only static const integral data members can be
> initialized within a class    c:\users\datuashvili\documents\visual
> studio 2010\projects\dfs\dfs\dfs.cpp  54  1   DFS Error   2   error C2758:
> 'Stack::size' : must be initialized in constructor base/member
> initializer list  c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 12  1   DFS Error   4   error C2758:
> 'Graph::maxvertex' : must be initialized in constructor base/member
> initializer list  c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 60  1   DFS Error   5   error C2679: binary '='
> : no operator found which takes a right-hand operand of type 'Vertex
> *' (or there is no acceptable conversion) c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 76  1   DFS

Change 更改

const int size=20;

to

static const int size=20;

(static means it will be initialized once per-class, not per-object which would require an initialization list) (静态意味着它将按类初始化一次,而不是按对象初始化一次,而这需要初始化列表)


vertexlist[nverts++]=new Vertex(lab);

Your trying to set a Vertex to a Vertex* . 您尝试将Vertex设置为Vertex* This won't compile. 这不会编译。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM