이중 연결 목록 클래스를 구현해야하는 할당이 있습니다.C++의 이중 연결된 목록
struct node {
node *next;
node *prev;
T *o;
};
이 구조체의 멤버 '데이터'포인터되지 않은 경우 클래스를 작성 훨씬 쉽게 될 것이라고 나에게 보인다는 다음과 같이 몇 가지 이유를 들어 그들은 노드 struct
을 정의했다. 말할 것도없이 나는 그것을 바꿀 수 없기 때문에 나는 단지 그것을 해결해야 할 것입니다. 디버깅 ddd를 사용하는 동안
template <typename T>
void Dlist<T>::insertFront(T *o) {
node *np = new node;
T val = *o;
np->o = &val;
np->prev = NULL;
np->next = first;
if (!isEmpty()) {
first->prev = np;
} else {
last = np;
}
first = np;
}
내가 모든 것을 잘 모든 것을 가져 주위에 당신이 수 있지만 두 번째 시간을 삽입 처음 작동하는지 깨달았다 : 나는 다음과 같이 목록의 시작 부분에 요소를 추가하는 방법을 구현하는 시도 새로운 요소에 'val'을 설정하자마자 val의 메모리 주소가 사용 된 이후 첫 번째 요소를 "덮어 씁니다". 나는 단지 'val'변수를 다음과 같이하는 대신에 다른 일을 시도했다.
T *valp = new T;
T val;
valp = &val;
val = *o;
np->o = valp
이것은 작동하지 않는 것 같다. 이것이 방금 추가 메모리 누수와 함께했던 것보다 훨씬 복잡한 형태이기 때문에 이것이라고 생각합니다 :)
올바른 방향으로 어떤 아이디어/포인터가 좋을 것입니다.
1. –
이 부분을 살펴보면 첫 번째 답변이 문제를 이해하는 데 도움이 될 수 있습니다. http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers-and-what-can-be -done-to -comecome – Dan
기회가 생기면 이것도 한번보세요 : http://stackoverflow.com/questions/599308/proper-stack-and-heap-usage-in-c - 스택과 힙 할당. – Dan