2012-04-15 4 views
0

これは宿題の問題です。プログラムは正常に構築されましたが、実行できません。それはただ止まった。私はリストを作るために "構造体"を使ってみました。私の "挿入"機能に何が問題なのか分かりません。私がここで初めてのことですが、うまくいけば私はいくつかのアドバイスを得るでしょう。ポインタを使用して単一のリンクリストで作業する

//============================================================================ 
// Name  : test2.cpp 
// Author  : yan zeng 
// Version  : 
// Copyright : Your copyright notice 
// Description : Hello World in C++, Ansi-style 
//============================================================================ 


#include <iostream> 
#include <stdio.h> 
#include <stdlib.h> 
#define TRUE 1 
#define FALSE 0 
typedef int BOOLEAN; 
using namespace std; 

struct Node { 
    int value; 
    struct Node *next; 
}; 

void insert(int x, struct Node **pL); 

void insert(int x, struct Node **pL){ 

    if (*pL == NULL) { 
     struct Node **pL = (struct Node **) malloc(10 * sizeof(int *)); 

     (**pL).value = x; 
     (*pL)->next = NULL; 

    } 

    else 
     insert(x, &((*pL)->next)); 

} 



int main (int argc, char **argv) 
{ 

    // insert code here... 

    // make a list by declaring a pointer to a node 

    struct Node *NodePointer = NULL; 



    for (int i=3; i<20; i+=2) { 
     insert(i,&NodePointer); 
    } 



} 
+0

C++またはCを使用していますか?とにかくC++で 'malloc'を使うのは悪い行為です。 –

+0

「それはちょうど止まった」とはどういう意味ですか?このプログラムは出力を生成しません、あなたは何が起こると思いますか? – zvrba

+0

'std :: list '不十分ですか? – Puppy

答えて

0

私が与えることができる最良のアドバイスは、デバッガの使い方を学ぶことです。その他のアドバイス:malloc/freeをC++で使用しないでください。new/deleteを使用してください。

+0

いいえ、 'new/delete'を使わないでください。スマートポインタ/ベクトル/リストクラスを使用します。 – Puppy

+0

@DeadMGこれは、単純なポインタをまだ理解していない人にとってはひどいアドバイスです。 – zvrba

+0

@zvrba:** C++ **への新人は後で**まで**ポインタが必要ない。 KoenigとMooが加速したC++は、第10章までポインタを扱いません。 –

0

このコードにはかなりの問題がありますが、ここではデバッガを使用することは間違いありません。

あなたのプログラムは、それが

(**pL).value = x; 

でクラッシュしたので、宿題を修正するよう、または空の機能があなたに提供された場合には、このコードはあなたに提供された場合、私はわからない、とあなたが必要「だけで停止します」それを記入する。いずれにしても、その行は間違っています。

また、newを使用する必要がある場合は、他にも述べたように、C++プログラムでmallocを使用しています。

+0

ありがとうございます。問題はこの行にあると思いますが、もう少し説明してください。 * pLが指す値に値xを代入しようとしましたが、何が問題なのですか(** pL).value = x; – hitchbull

+0

デバッガのレポート「exc_bad_access」はわかりませんが – hitchbull

関連する問題