2016-05-28 6 views
-3

したがって、ロジックは次のようになります。 リンクリストが(6,7,8)のデータで構成されていて、insert(1,5)を渡すと、リストは(5,6,7,8)になります。 同様にinsert(3,2)のリンクリストは(6,7,2,8)です。n番目のノードの位置を指定して1つのリンクリストにデータを挿入する

は、私は以下のコードをコンパイルしようとしたが、それはありません、私も答えを探して、デバッグを試みたが、見つけ

「-start」で私にメインにエラーstating-

未定義の参照を提供します親切に解決策を提案してください。さらなる提案やバグ修正は歓迎されます。 (私はコンパイルするためのcodepadを使用している)

#include<iostream> 
using namespace std; 
class Link_no 
{ 
    struct node 
    { 
     int data; 
     node *next; 
    }; 

    void insert(int n,int d,node *head) 
    { 
     node *temp=new node(); 
     temp->data=d; 
     temp->next=NULL; 
     node *temp1; 

     if(n==1) 
     { 
      temp->next=head; 
      head=temp; 
      return; 
     } 
     else 
      temp1=head; 
     { 
      for(int i=0;i<n-1;i++) 
      { 
       temp1=temp1->next; 
      } 
      temp->next=temp1; 
      temp1=temp; 
     } 
    } 
    void print(node *start) 
    { 
     node *temp=start; 
     while(temp!=NULL) 
     { 
      cout<<temp->data<<endl; 
      temp=temp->next; 
     } 
    } 
    int main() 
    { 
     node *head=NULL; 
     Link_no o1; 
     o1.insert(1,5,head); 
     o1.insert(2,7,head); 
     o1.insert(1,9,head); 
     o1.print(head); 
     return 0; 
    } 
} 
+5

C++ありえないのjava、 'main'が、私はこれを推測しているクラス – user463035818

+2

の内側に属していけないんあなたはそれを変更することができれば宿題ですが、:リストはこの仕事のために本当に悪いデータ構造、動的です'std :: vector'のような配列はもっとうまくいくでしょう。 –

答えて

0

以下は、あなたには、いくつかのより多くのデバッグする必要があるので、それは完全にあなたがまだやりたいことはありません

#include<iostream> 
using namespace std; 
class Link_no 
{ 
    private: 
    struct node 
    { 
     int data; 
     node *next; 
    }; 

    node *head; 
    public: 

    Link_no(){ 
     head = nullptr; 
    } 

    void insert(int n,int d) 
    { 
     node *temp=new node(); 
     temp->data=d; 
     temp->next=NULL; 
     node *temp1; 

     if(n==1) 
     { 
      temp->next=head; 
      head=temp; 
      return; 
     } 
     else 
      temp1=head; 
     { 
      for(int i=0;i<n-1;i++) 
      { 
       temp1=temp1->next; 
      } 
      temp->next=temp1; 
      temp1=temp; 
     } 
    } 

    void print() 
    { 
     node *temp=head; 
     while(temp!=NULL) 
     { 
      cout << "data is " << temp->data<<endl; 
      temp=temp->next; 
     } 
    } 


}; 

    int main() 
    { 
     Link_no o1; 
     o1.insert(1,5); 
     o1.insert(2,7); 
     o1.insert(1,9); 
     o1.print(); 
     return 0; 
    } 

が唯一のデータとして5と9を出力しコンパイルします。

編集: 紙とペンを手にして、そこに何か問題が起こっているので、手動であなたのやっていることをやってみることをお勧めします。

自分自身で次の作品が見つからない場合は、まだ極端なケースでのテストを試みていません。

#include<iostream> 
using namespace std; 
class Link_no 
{ 
    private: 
    struct node 
    { 
     int data; 
     node *next; 
    }; 

    node *head; 
    public: 

    Link_no(){ 
     head = nullptr; 
    } 

    void insert(int n,int d) 
    { 
     node *temp=new node(); 
     temp->data=d; 
     temp->next=NULL; 
     node *temp1; 

     if(n==1) 
     { 
      temp->next=head; 
      head=temp; 
      return; 
     } 
     else 
     { 
      cout << "foo" << endl; 
      temp1=head; 
      for(int i=1;i<n-1;i++) 
      { 
       temp1=temp1->next; 
      } 
      node *temp2 = temp1->next; 
      temp1->next = temp; 
      temp->next=temp2; 
     } 
    } 

    void print() 
    { 
     node *temp=head; 
     cout << "link" << endl; 
     while(temp!=NULL) 
     { 
      cout << "data is " << temp->data<<endl; 
      temp=temp->next; 
     } 
    } 


}; 

    int main() 
    { 
     Link_no o1; 
     o1.insert(1,5); 
     o1.print(); 
     o1.insert(2,7); 
     o1.print(); 
     o1.insert(1,9); 
     o1.insert(2,6); 
     o1.print(); 
     return 0; 
    } 
+0

コードが正常に機能しました。ありがとうございます!ちょうど1つの問題... nullptrを使用している間、未定義のスコープが表示されます。しかし、nullに戻すとコンパイルが成功します。この問題も調べてみてください。 –

+0

あなたが間違ったことを理解していますか? また、定義されていないスコープが意味することをもう少し明確にすることができますか? これはコンパイルエラーですか、IDEがこのエラーを出すのですか? – turoni

+0

私はcodeshefオンラインコンパイラを使用してコンパイルしました。このエラーはnullptrでのみ表示され、nullではありません。たぶん問題はIDE自体か何かでですか? –

4

C++ありえないのjava、メインクラス内属していません。コンパイラは、コードにが存在しないため、int Link_no::main()のみが文句を言いますが、プログラムのエントリポイントではありません。

1

int main()class Link_noから取り除く。 class Link_noからstruct nodeを取り出してください。コンパイルする必要があります。

関連する問題