深度优先搜索算法实现

时间:2011-10-16 10:45:38

标签: c++

以下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;
}

以下是我得到的编译错误:

>   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

1 个答案:

答案 0 :(得分:2)

更改

const int size=20;

static const int size=20;

(静态意味着它将每个类初始化一次,而不是每个对象需要一个初始化列表)


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

您尝试将Vertex设置为Vertex*。这不会编译。