2010-07-24 4 views
1

J'ai essayé d'implémenter une liste doublement chaînée en C++. Voici le code,Erreurs de compilation pour le code de liste double lié

#include <iostream> 
using namespace std; 
//double linked list 
class Link{ 
    public: 
     long data; 
     Link *next; 

    public: 
     Link(long d) { 
      data=d; 
     } 
     void displaylink() { 
      cout<<data<<" "<<"\n"; 
     } 
}; 

class firstl { 
    private: 
     Link *first; 
     Link *last; 

    public: 
     firstl() { 
      first=NULL; 
      last=NULL; 
     } 
    public: 
     bool empthy() { 
      return (first==NULL); 
     } 

    public: 
     void insertfirst(long dd) { 
      Link *newlink=new Link(dd); 
      if (empthy) 
       last=newlink; 
      newlink->next=first; 
      first=newlink; 
     } 

    public : 
     void insertlast(long dd) { 
      Link *newlink=new Link(dd); 
      if (empthy) 
       first=newlink; 
      else 
       last->next=newlink; 
      last=newlink; 
     } 


    public : 
     long deletefirst() { 
      long temp=first->data; 
      if (first->next==NULL) //if only one item 
       last=NULL;//null<-last; 
      first=first->next; //first-->old next; 
      return temp; 
     } 
    public: 
     void displaylist() { 
      Link *current=first; 
      while (current!=NULL) { 
       current->displaylink(); 
       current=current->next; 
      } 
     } 
}; 

int main() { 
    firstl linked; 
    linked.insertfirst(22); 
    linked.insertfirst(44); 
    linked.insertfirst(66); 
    linked.insertlast(11); 
    linked.insertlast(33); 
    linked.insertlast(55); 
    linked.displaylist(); 
    linked.deletefirst(); 
    linked.deletefirst(); 
    linked.displaylist(); 
    return 0; 
} 

Mais voici les erreurs de compilation:

1>------ Build started: Project: linked)list, Configuration: Debug Win32 ------ 
1> linked_list.cpp 
1>c:\users\david\documents\visual studio 2010\projects\linked)list\linked_list.cpp(40): error C3867: 'firstl::empthy': function call missing argument list; use '&firstl::empthy' to create a pointer to member 
1>c:\users\david\documents\visual studio 2010\projects\linked)list\linked_list.cpp(51): error C3867: 'firstl::empthy': function call missing argument list; use '&firstl::empthy' to create a pointer to member 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Comment cela peut-il être résolu?

+3

Il est orthographié comme « vide », et non « empthy ». – kennytm

+1

Est-ce que ce sont les devoirs? – egrunin

+2

Je ne pouvais tout simplement pas me résoudre à répondre à cette question, car cela aurait impliqué une faute d'orthographe "vide" de la manière la plus horrible. –

Répondre

1

if (empthy) est faux, empthy est une fonction donc il devrait être if (empthy()) .BTW, nom de la méthode devrait être empty.

8

empthy est une méthode, par conséquent une fin () est nécessaire pour l'appeler.

void insertfirst(long dd){ 

    Link *newlink=new Link(dd); 
    if (empthy())  // <----- 
     last=newlink; 
    ... 
2

Vous devez changer

if (empthy) 

à

if (empthy()) 
1

empthy est une fonction, vous devez appeler comme ceci:

if (empthy()) 
1

est ici comme je le ferais:

#include <list> 
typedef std::list<long> firstl; 
+0

Bon point. Mais ça ne répond pas à la question ... – pascal

Questions connexes