2016-12-02 8 views
0

연결된 목록 배열을 사용하여 별도의 연결을 구현하려고합니다. 먼저 구조체 배열을 초기화합니다. 구조체 배열은 결국 10 개의 머리 노드로 구성되며 초기에는 0이 아닌 아무것도 없습니다. 노드에 아무것도 없습니다. null로 구조체 배열 초기화 C++

나는이 일 것이라고 생각 :

void Hash::sepChain(int key){ 
    int i; 

    //initialize array with Null 
    myNode a[10]; 
    for(i=0; i<10; i++){ 
     a[i] = NULL; 
    } 

    myNode->item = key; 
    myNode->next = a[key%tableSize]; 
    a[key%tableSize] = myNode; 

} 

하지만 난이 오류를 얻고있다.

hash.cpp:176:10: error: no viable overloaded '=' 
a[i] = NULL; 
~~~~^~~~~ 
./hash.hpp:30:8: note: candidate function (the implicit copy assignment operator) 
    not viable: no known conversion from 'long' to 'const myNode' for 1st 
    argument 
struct myNode{ 
^

이 내가

struct myNode{ 
    int item;// the value that goes into the node 
    myNode *next; 
}; 

이유는이 오류를 얻고 어떻게 고칠 수 .HPP에서 구조체를 작성하는 방법입니다? 고맙습니다.

+0

'*'가 보이지 않는 것 같습니다. 'myNode a [10];은'myNode * a [10];이되어야합니다. – NathanOliver

+0

여기 거의 모든 초보자가 왜 연결 목록을 구현하려고하는지 이해할 수 없습니다. 첫째,'std :: list'가 존재하고, 둘째, 링크 된리스트는 너무 많은 양의 데이터가없고 임의의 위치에 삽입해야만 훌륭한 것이 아닙니다. –

+3

@GuillaumeRacicot 새로운 CS 학생의 일반적인 숙제 문제입니다. 표준 컨테이너를 사용하기 전에 자신의 컨테이너를 만들 수 있어야합니다. – NathanOliver

답변

0

포인터를 참조하지 않는 NULL 변수로 설정할 수 없습니다. 당신이 NULL로 A의 요소를 inizialize 할 경우

myNode *a[10] 
+0

컴파일되지 않습니다. 배열 구문이 어떻게 작동하는지 수정하십시오. –

+0

죄송합니다.그것은 내 산만했다. –

1
a[i] = NULL; 

로 선언해야하는 것은 해당 작업의 LHS 유형 myNode의 목적은 바로 때문에이 아니다. myNode에 대한 포인터가 아닙니다.

a[i] = myNode{}; 

은 또한 사용할 수 있습니다 :

myNode a[10] = {}; 

을하고 for 루프를 제거

당신은 사용할 수 있습니다.

+0

그게 나에게 오류가 발생했다는 것을 알려준다. "('function 스타일의 캐스트 또는 타입 구성을 위해" – mike

+0

'{}'문법에 대해 C++ 11이 필요하다. -std = C++ 11 'for g ++ and clang. C++ 11을 사용할 수 없다면 대신 myNode를 myNode()로 초기화하십시오. – Asu