현재 자신을 C++로 가르치고 있으며 부분적으로 완료된 포인터를 사용하여 C++로 이중 연결 목록을 구현하려고합니다. 현재 코드가 매달려있는 노드 나 출력 오류를 처리하지 못한다는 것을 알고 있습니다. 둘 다 다음에 구현할 것입니다. 그러나 코드는 최소한 목록 객체를 구성하고 요소를 추가 할 수 있어야합니다. 현재 LinkedList *에서 비 스칼라 유형 LinkedList 로의 변환을 요청하고 있음을 나타내는 목록의 생성자를 호출하려고하면 오류가 발생합니다. 내 목록이 포인터로 선언되는 이유는 무엇입니까? 어떤 도움이라도 대단히 감사 할 것입니다, 감사합니다!포인터로 이중 링크 된 목록 구현 C++
LinkedList.h
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
struct dataElement {
int key;
int id;
};
struct Node
{
dataElement data;
Node* next;
Node* prev;
};
class LinkedList
{
public:
/** Default constructor */
LinkedList();
/** Default destructor */
virtual ~LinkedList();
void addAtFront(int newElement);
void addAtBack(int newElement);
int removeTop();
int removeBottom();
int getTop();
int getBottom();
int findKey(int keyToFind);
protected:
private:
Node* head;
Node* tail;
int size;
};
#endif // LINKEDLIST_H
LinkedList.cpp
#include "LinkedList.h"
#include <iostream>
#include <stdlib.h>
LinkedList::LinkedList()
{
size = 0;
}
LinkedList::~LinkedList()
{
//dtor
}
void LinkedList::addAtFront(int newElement)
{
if (size == 0)
{
Node temp;
temp.data.id = newElement;
temp.data.key = 0;
head = &temp;
tail = &temp;
++size;
}
else
{
Node temp;
temp.data.id = newElement;
temp.data.key = size;
temp.next = head;
head->prev = &temp;
head = &temp;
++size;
}
}
void LinkedList::addAtBack(int newElement)
{
if (size == 0)
{
Node temp;
temp.data.id = newElement;
temp.data.key = 0;
head = &temp;
tail = &temp;
++size;
}
else
{
Node temp;
temp.data.id = newElement;
temp.data.key = 0;
tail->next = &temp;
temp.prev = tail;
tail = &temp;
++size;
}
}
LinkedListTest.cpp
#include "LinkedListTest.h"
#include "LinkedList.h"
int main()
{
LinkedList list = new LinkedList();
list.addAtFront(0);
}
포인터를 처리, 당신은'사용해야 - 멤버 함수에 도착>'대신'.'의를. 메인'list-> addAtFront (0);'의 마지막 행을 만들고 무슨 일이 일어나는 지보십시오. – Charlie