2012-05-06 15 views
-2
#include <string> 

using namespace std; 

class PersonList 
{ 

private: 
    char aName[7]; 
    int aBribe; 
    PersonList *link; 

public: 
    void addNodes(); 
    void display(); 

}; 

#include <iostream> 
#include <string> 

using namespace std; 

#include "mylink.h" 

void PersonList::addNodes() 
{ 

    PersonList *temp2; 

    PersonList* startPtr = new PersonList(); 
    PersonList* current = new PersonList(); 


     PersonList *temp = new PersonList();//created the first node on the list 
     cout<<"Enter the person's name: "; 
     cin>>temp->aName; 
     cout<<"Enter the person's contribution: "; 
     cin>>temp->aBribe; 
     temp->link=NULL;//when i get last node, link will point to null(where am i in list?) 

     if(startPtr==NULL) 
     { 
      startPtr = temp; 
      current = startPtr; 
     } 

     else 
     { 
      temp2 = startPtr; 

      while(temp2->link!=NULL) 
       temp2 = temp2->link; 
      temp2->link=temp; 
     } 
    //} 
} 

void PersonList::display() 
{ 
    PersonList *temp; 
    PersonList *startPtr = this; 

    temp=startPtr; 

    while(temp != NULL) 
    { 
     cout<<temp->aName<<"\t\t"<<temp->aBribe<<endl; 
     temp = temp->link; 
    } 

} 

#include <iostream> 
#include "mylink.h" 

using namespace std; 

int displayMenu (void); 
void processChoice(int, PersonList&); 

int main() 
{ 
int num; 

PersonList myList; 


do 
{ 
num = displayMenu(); 
if (num != 3) 
processChoice(num, myList); 
} while (num != 3); 

return 0; 
} 

int displayMenu(void) 
{ 
int choice; 
cout << "\nMenu\n"; 
cout << "==============================\n\n"; 
cout << "1. Add student to waiting list\n"; 
cout << "2. View waiting list\n"; 
cout << "3. Exit program\n\n"; 
cout << "Please enter choice: "; 
cin >> choice; 

cin.ignore(); 
return choice; 
} 

void processChoice(int choice, PersonList& p) 
{ 

switch(choice) 
{ 
case 1: p.addNodes(); 
break; 
case 2: p.display(); 
break; 
} 

} 

私の質問には、表示機能には入力した名前と投稿が表示されません。 ImはaNameとaribeを呼び出すポインタノードとして一時変数を使用しています。ヌルに達していない間、これはリストを通過します。リンクされたリストC++、出力機能で表示されない

PersonList *startPtr = new PersonList(); 

、その後のことを示す:何もあなたが新しいリストを作成している出力

+1

新しい「PersonList」を作成するとどうなりますか? 'addNodes()'もaddNodesが呼び出されますか?addNodesはローカルインスタンスでのみ動作しているようですが、変数やそれ自身では渡されません。 – EdChum

答えて

4

に示していません。だから当然それは空です。

addNodesメソッドでも同様の問題があります。新しいリストにノードを追加してから、それを投げ捨てます。これは実際にはメモリリークです。

+0

迅速な対応をありがとう。私はこれを今PersonList * startPtr;それは、startPtrが初期化されずに使用されているということです。何が問題ですか? – Masoman

+0

あなたのクラス定義を見ることなく確信するのは難しいですが、おそらくあなたはPersonList * startPtr = thisを望みます。 –

+0

ここに私のクラス定義です#include using namespace std; クラスPersonList {プライベート: \tチャーもしaName [7]。 \t int aBribe; \t PersonList * votePtr; public: \t void addNodes(); \t void display(); }; – Masoman

関連する問題