push_front()
단일 링크 된 목록의 메서드를 멤버 함수으로 구현하는 방법은 무엇입니까? 당신이 this
포인터에 할당 할 수 없기 때문에 아래의 코드는, (error: lvalue required as left operand of assignment
)를 컴파일되지 않습니다. 이걸 어떻게 돌릴 수 있니?push_front()를 연결 목록 멤버 함수로 사용
#include<algorithm>
using namespace std;
class ListElem{
public:
ListElem(int val): _val(val){}
ListElem *next() const { return _next; }
void next(ListElem *elem) { _next = elem; }
void val(int val){ _val = val; }
int val() const { return _val;}
void print();
void push_front(int);
private:
ListElem *_next;
int _val;
};
void ListElem::push_front(int val)
{
ListElem *new_elem = new ListElem(val); //new node
new_elem->next(this); // new node points to old head
this = new_elem; // make new node the new head, error!
return;
}
void ListElem::print()
{
ListElem *pelem = this;
while(ListElem *pnext_elem = pelem->next())
{
cout << pelem->val() << ' ';
pelem = pnext_elem;
}
cout << pelem->val() << endl;
}
int main()
{
//initialization
ListElem *head = new ListElem(1);
ListElem *elem = head;
for (int ix = 2; ix < 10; ++ix)
{
ListElem *elem_new = new ListElem(ix);
elem -> next(elem_new);
elem = elem_new;
}
head->print();
//insert at the beginning
head->push_front(7);
head->print();
}
는 push_front 목록에 방법이다, 내가 보는 모든 목록 * 노드 * 클래스입니다. – Borgleader
@Borgleader, 나는 연결리스트의 머리가 목록 자체 ([책] (이다 생각 http://books.google.pl/books?id=FQzczWtdm3gC&pg=PT36&lpg=PT36&dq=%22term+linked+list+is+ 자주 + 사용 + as + 속기 + for + first + element + for + a + linked + list.png 22page = 20page = 20pixel & 20list % 20is % 20often % 20used % 20as % 20shorthand % 20for % 20the % 20first % 20element % 내지 200f % 20A % 20linked % 20list. % 22 F = 거짓)). 이것은 좋은 접근 방법이 아닌가? – cpp
나는 "자주"라고 말하지 않을 것입니다. 확실히 std 라이브러리에서 어떻게 완료되었는지는 아닙니다. 그리고 그것은 push_front를 지원하지 않습니다. – Borgleader