돼지 저금통 MYPI

돼지 저금통
접속 : 2148   Lv. 36

Category

Profile

Counter

  • 오늘 : 1824 명
  • 전체 : 2585388 명
  • Mypi Ver. 0.3.1 β
[일반] 더블링크드리스트를 공부중인데요 (2) 2019/07/02 PM 10:06

img/19/07/02/16bb2ca7f904e2df2.png

 

#include <iostream>
using namespace std;
 
class DNode {
friend class MyStruct;
private:
int data;
DNode *prev;
DNode *next;
};
 
class MyStruct {
private:
DNode* first;
DNode* last;
public:
MyStruct() {
first = new DNode();
last = new DNode();
first->prev = last->next = NULL;
first->next = last;
last->prev = first;
}
~MyStruct() {
DNode* temp1 = first, *temp2;
while (temp1 != last) {
temp2 = temp1;
temp1 = temp1->next;
delete temp2;
}
delete temp1;
}
void pushFront(int data) {
DNode* temp = new DNode();
temp->data = data;
 
temp->next = first->next;
first->next->prev = temp;
temp->prev = first;
first->next = temp;
 
cout << " front 삽입 : " << data << endl;
}
int popFront()
{
// ★ -----------------------------------------------------------------------
// 이 부분을 삭제하고 popFront() 함수를 완성하시오.
cout << "현재는 자료를 빼올 수가 없습니다. " << endl;
return -1;
// ★ -----------------------------------------------------------------------
}
void pushBack(int data) {
DNode* temp = new DNode();
temp->data = data;
 
temp->prev = last->prev;
last->prev->next = temp;
temp->next = last;
last->prev = temp;
 
cout << " back 삽입 : " << data << endl;
}
int popBack() {
// ★ -----------------------------------------------------------------------
// 이 부분을 삭제하고 popBack() 함수를 완성하시오.
cout << "현재는 자료를 빼올 수가 없습니다. " << endl;
return -1;
// ★ -----------------------------------------------------------------------
}
};
 
 
int main(void)
{
MyStruct myStruct;
 
myStruct.pushFront(10);
myStruct.popFront();
myStruct.popFront();
myStruct.pushFront(20);
myStruct.pushFront(30);
myStruct.popFront();
myStruct.popBack();
myStruct.pushBack(90);
myStruct.popBack();
myStruct.popBack();
myStruct.pushBack(100);
myStruct.pushBack(110);
myStruct.popBack();
 
getchar();
 
}
 
 
자료구조 공부중인데
c++을 아예 몰라서 작성을 못하겠습니다.
 
popFront
popBack
 
어떻게 작성해야 하나요???

 

 

 

신고

 

revliskciuq    친구신청

popFront 자체는 first 노드 의 next 포인터가 가리키는 노드를 꺼내고 꺼낸노드의 next 포인터가 가리키는 노드와 first 노드를 연결 시키면 될 것 같아요. popLast도 비슷하게 짜시면 되는데 사실 링크드리스트의 구조는 아실 것 같고 일단 c 문법을 보시는게... 포인터만 보시면 될 것 같아요.

revliskciuq    친구신청

참고로 Dnode * prev 에서 * 는 prev가 Dnode 라는 구조의(기본 자료형, 혹은 클래스 혹은 스트럭트.._ 포인터 변수라는 말이고 Mystruct() 는 생성자 ~Mystrut()는 소멸자이고 temp->data 에서 -> 는 포인터 변수에서 temp.data 같이 프로퍼티나 메소드를 호출 할때 쓰는 것 입니다.
X