用类做双向链表的各种操作。在类Liste中,定义了函数ajouter,ajouter是法语添加的意思。
void Liste::ajouter(const string& s){
 Element *e = new Element(s);
         if (premier==NULL)
     {premier=dernier=e;}
    
          else {
               e->precedent=dernier;
dernier ->suivant = e;
dernier=e;
                   }
        
}然后在main()中,我建个对象,叫person,我要在person里添加两个字符串结点,"Baleze Bruno","Costaud Claude",在main()中如何写这段程序呢?谢谢?
  

解决方案 »

  1.   

    Liste person;
    person.ajouter(_T("aaa"));
    person.ajouter(_T("bbb"));
      

  2.   

    楼上的,那样不好用的,可能是我没说明白,
    --------------------liste.h------------
    #ifndef LISTE_H
    #define LISTE_H
    #include <string>
    using namespace std;class Element;
    class Iterateur;class Liste
    {
    public:
       // constructeur构造函数
       Liste();
       
       // ajouter s a la fin de la liste 加S到表结尾
       void ajouter(const string& s);
       
       // ajouter s avant la position pos 加S到位置POS前
       void inserer(Iterateur& pos, const string& s);
       
       // supprimer l'element a la position  删除POS这个元素
       void supprimer(Iterateur& pos);
       
       // la premiere position 每一个位置 debut是开始的意思
       Iterateur debut() const;
       
       // la fin de la liste (apres la derniere position) 表结尾,在最后一个位置后。fin是结尾的意思
       Iterateur fin() const;
       
       //afficher tous les elements
       void Liste::afficher(Iterateur & pos);
       
    private:
       // pointeurs vers le premier第一 et le dernier最后 element 指向第一和最后元素的指针 
       Element* premier;
       Element* dernier;
    };
    class Iterateur
    {
    public:
       // constructeur
       Iterateur();
       
       // retourne la valeur dans cette position返回这个位置的值
       string& get() const;
       
       // avance a la position suivante前一个位置
       void suivant();
       
       // recule a la position precedente向后一个位置
       void precedent();
       
       // compare deux iterateurs对比两个ITERATOR
       bool egal(const Iterateur& b) const;
       
    private:
       // pointeur vers l'element courant 指向一般元素的指针
       Element* position;
       
       // pointeur vers le dernier element de la liste指向最后一个元素的指针
       Element* dernier;friend class Liste;   
    };#endif
    ----------------------liste.cc-----------------------------
    #include "liste.h"
    #include <string>
    #include <iostream>
    using namespace std;class Element
    {
    public:
       // constructeur 构造函数
       Element(const string& s);
      
    private:
       string valeur;
       
       // pointeurs vers les voisins 指向前后邻居的指针
       Element* precedent;
       Element* suivant;
       
    friend class Liste;
    friend class Iterateur;
    };
    Element::Element(const string& s)
    {  valeur = s;
       precedent = suivant = NULL;
    }
    Iterateur::Iterateur()
    {  position = dernier = NULL;
    }
    string& Iterateur::get() const
    {  return position->valeur;
    }
    void Iterateur::suivant()
    {  position = position->suivant;
    }
    void Iterateur::precedent()
    {  if (position == NULL) // fin de la liste 表结尾
          position = dernier;
       else
          position = position->precedent;
    }
    bool Iterateur::egal(const Iterateur& b) const
    {  return position == b.position;
    }
    Liste::Liste()
    {  premier = dernier = NULL;
    }
    Iterateur Liste::debut() const
    {  Iterateur it;
       it.position = premier;
       it.dernier = dernier;
       return it;
    }
    Iterateur Liste::fin() const
    {  Iterateur it;
       it.position = NULL;
       it.dernier = dernier;
       return it;
    }//creation de l'Elt a partir de la valeur 创建一个元素
    Element::Element *e(const string& s)
    { Element *e= new Element(s);}// ajouter s a la fin de la liste 加到表结尾
    void Liste::ajouter(const string& s){
     Element *e = new Element(s);
        
         if (premier==NULL)
         {premier=dernier=e;}
        
              else {
                   e->precedent=dernier;
    dernier ->suivant = e;
    dernier=e;
                       }
            
    } // ajouter s avant la position pos 加到表位置pos前
     void Liste::inserer(Iterateur& pos, const string& s){
     Element *e = new Element(s);
     if (premier==NULL)
        {premier=dernier=e;}
     else { if (pos.position==premier){
        pos.position->precedent=e;
    e->suivant=pos.position;
    premier=e;
     }
    else {
    pos.position->precedent->suivant=e;
    e->precedent=pos.position->precedent;
    pos.position->precedent=e;
    e->suivant=pos.position;
                      }  
              }
    }// supprimer l'element a la position pos 在表位置pos前删除那个元素
     void Liste::supprimer(Iterateur& pos){
          if (premier==NULL)
             {cout<<"la liste is null!"<<endl;}
          else {if (pos.position==premier){
                   premier=NULL;
                   premier=premier->suivant;}
                   else {if (pos.position==dernier){
                        dernier=NULL;
                        dernier=dernier->precedent;}
                        else {pos.position->precedent=pos.position->suivant->precedent;
                             pos.position->suivant->precedent=pos.position->precedent->suivant;
                             pos.position=NULL;
                             pos.position=pos.position->precedent;}
                        } 
                }  
    }
    ----------------------------------
    如何做个main()来实现加入结点元素"Baleze Bruno","Costaud Claude","Doue Damien","Vaillant Veronique",
    加一个元素"Sage Stephane"在第四个位置,
    删除第二个位置的元素,
    显示所有结点元素?
    ------------------------------------
    谢谢了,卡在这里,实在不会了。