컴공 일기56
게시글 주소: https://orbi.kr/00057028567
이건 아직 해결이 도대체 되지 않은 문제입니다. double linked list는 잘 구현해놨는데, 왜 Iterator 부분에서 원하는 대로 데이터가 안 뽑히는지…… 내일 12시 시험인데 9시즘 일어나서 1시간 정도 더 고민해보려고요... 구현 잘 됐는데, 왜 도대체 왜 안 되는 거냐고!
왜! 왜! 왜! 컴파일러씨 억까 자제좀요 ㅠㅠㅠ
#include <iostream>
#include <vector>
using namespace std;
class CShape{
protected:
int x,y;
public:
CShape(int a, int b) : x(a), y(b) {}
virtual void Print() = 0;
};
template <typename T>
class CCircle : public CShape{
private:
T Radius;
public:
CCircle(int a, int b, T r) : CShape(a,b), Radius(r) {}
double GetArea() { return 3.14 * Radius * Radius; }
void Print() { cout << this->GetArea() << endl;}
template <typename U>
friend ostream& operator << (ostream& out, CCircle<U>& rhs);
};
template <typename U>
ostream& operator << (ostream& out, CCircle<U> rhs){
cout << rhs.GetArea() << endl;
return out;
}
template <typename T>
struct Node{
T data;
Node<T> *next;
Node<T> *prev;
Node(T d, Node<T> *n = NULL ) : data(d), next(NULL), prev(NULL) { }
};
template <typename T>
class ListIterator{
private:
Node<T>* ptr;
public:
ListIterator(Node<T> *p=0) : ptr(p) {}
void operator++ (int) { ptr = ptr->next;}
void operator-- (int) { ptr = ptr->prev;}
Node<T>* operator&(){
return ptr;
}
T &operator* () { return ptr->data;}
ListIterator<T> operator+ (int adv)
{
while (adv > 0)
{
ptr = ptr-> next;
adv--;
}
return *this;
}
void operator=(Node<T> *p)
{
ptr = p;
}
};
template <typename T>
class MyList {
private :
Node<T> *start;
Node<T> *last;
public:
MyList() : start(NULL), last(NULL) {}
typedef ListIterator<T> iterator;
Node<T> *begin() {return start;}
Node<T> *rbegin() {return last;}
void push(T d) {
Node<T> *temp = new Node<T> (d, NULL);
if (start == NULL) {
start = last = temp;
}
else
{
temp -> prev = last;
last -> next = temp;
last = temp;
}
}
void insert(iterator iter, T d) {
Node<T> *now = &iter;
Node<T> *prevnode = now->prev;
Node<T> *newnode = new Node<T>(d);
prevnode->next = newnode;
newnode->prev = prevnode;
newnode->next = now;
now->prev= newnode;
if(now == start) start = newnode;
}
};
int main()
{
int i;
MyList<CCircle<double> > intL;
MyList<CCircle<double> >::iterator lIter;
for(i=0; i<5; i++)
{
intL.push(CCircle<double>(1,1, i+ 1.1));
}
lIter = intL.begin();
intL.insert(lIter+2, CCircle<double>(1,1,1.1));
for(i=0; i<6; i++){
cout << *lIter;
lIter++;
}
lIter = intL.rbegin();
for (i=0; i<6; i++){
cout << *lIter;
lIter--;
}
return 0;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
고대 일어일문 1
화작확통생윤사문 92/99/2/99/99 가능?
-
아니 뭔,,, 카운터에 똑같은 간호사복입은 간호사3명 그리고 여자 상담실장 이랑...
-
반수 추천 1
작수 화작 미적 물지 백분위 77/98/3등급/94/94 로 반수하려는데용...
-
안녕하세요 영어 문제 제작이 취미인 과다샾 입니다 앞으로 이렇게 매일 영어 두...
-
현우진 가리기가 뭐더라 12
뉴런 듣다가 뇌정지 옴 언제 설명해준거지
-
자췻방에 여자가끔 데리고 오는데 그럴때마다 바닥에 떨어진 긴머리 누구야! 라고...
-
5월 더프 후기 2
국어 100 수학 88 21,29,30 쉽지 않았다..12번 헤맸는데 그냥...
-
뭔가 재밌긴 한데 이걸 쓸까 싶은데 일생 나중에 많이 쓰이나요??
-
나같은 현역 애기들은 선거권 없다
-
Breaking news
-
메가패스 양도 1
메가패스 매우 싸게 양도합니다 현재 56만원에 살 수 있다고 들었습니다. 40만원에...
-
재밌네
-
선거철이라 그런가 꺼지십쇼
-
팩트는 이재명 대통령되면 경제가 살아날 거라는 거임. AI에 점진적으로 유연하게...
-
왤캐 어렵지.. ㅠㅠ 개말렸네
-
화작 - 90 5 17 22 27 틀 17번은 찍었고 나머지 세 문제는 다시 풀어도...
-
보통 사회성이란게 상대 얘기 잘 들어주고 공감해주고 대화를 재밌게 이끌어주고 굳...
-
나랑 동거할사람
-
어케해요 막 일본 대지진 예언한 만화땜에 못가겠다는데 이해안되는 제가 이상한건가요..
-
5덮 기하 29 오류고나발이고 깔끔하게 푸신분없음? 4
식구하는데까진 금방이었는데 깡계산하다가 10분날리고 안되겠다싶어서 b제곱에 1부터...
-
너무 피곤한데 자고 일어나서 공부하러 가야겠다
-
차단완 5
ㅂㅅ
-
3까지 갈 수 있을까요.. 하루에 6시간씩 하고있긴한데
-
일반화학말이야
-
★6평 대비 고난도 수학 아이디 모의고사 1회 배포★ 1
안녕하세요. 이투스 온라인 수능 수학 강사 전인덕 입니다. 고등학교 때 오르비에서...
-
맛있게 먹겠습니다!! 무브주식회사를 숭배해라 무브링 푸하하
-
결과가 주작한거보다 낮으면 개쪽인데 굳이 왜 주작치는거임?
-
아잉 2
큥♡ 헤엣~~♡
-
헉
-
누에나방 암컷은 페로몬을 분비하여 수컷을 유인한다. 17
평가원 어떤 과목 기출에 나온 문장인지 맞춰보세요
-
자다가 침대에서 떨어졌습니다.
-
캬캬
-
공통 1~15번까지 전부 풀 시간 동안 기하 29번에만 쓴 나는 뭐.가.되.는.데?
-
아이고
-
이미 왔나? 어?
-
6위. 홍콩 디즈니랜드 테마파크 크기도 세계에서 가장 작고 성크기도 젤 작다. 근데...
-
P_0 위치 조건을 제1사분면으로 확정짓지 않으면 P_0가 제2사분면에 있을 때도...
-
3수긴한데 인서울만 해도 행복할꺼같음 올해 작년엔 논술반수였어서 공부 제대로 안하기도 했고
-
들었으면 출발
-
새 같이 생긴 사람
-
18000명임.
-
당연히 다 있는건줄 알았는데
-
무난하노
-
망갤테스트 11
ㅇ
-
아 너무 피곤해 2
머리 감고 왔는데도 잠이 안깨
-
.
-
구매를 할까말까 엄청 고민되네요 작년수능 많이 반영되서 많이 개정됬단 소린 들었는데...
-
중국인 건은 아닌데 갑자기 2년 전부터 칼부림 뉴스 ㅈㄴ 쏟아져 나오니까 전방주시...

컴공주님 파이팅..!
교수님께서 이게 시험에 분명 어려운 문제로 나온다고 하셨어요 ㅜㅜㅜ 내일 아침까지 더 고민해봐야겠어요!안녕히 주무세용!
음.. 버그 고치셧나요?
전에 올리던 코드 말인가용?
네네! 원인을 알아냈조 ㅎㅎㅎ
이 코드 ㅇ오류 원인은 operator++,-- 함수 다중 정의 쪽이었어욘
굳굳! 저도 컴공이라 해봤는데 비슷하게 나오네요
근데 이게 segmentaion 메모리 문제도 있어서 손을 다시 보긴 해야할 듯 해요
Ptr = Ptr -> next; 대신 ptr++을 하면 리스트 자료구조 특성상 이상한 주소를 가리키게 되어서 ptr->next 고치면 안 될 듯 한데.. 급한 불은 껐지만 의도대로 코딩은 안 되는 듯 합니다..
저도 다시 고민해서 올려볼게용 포인터 하나 잘못 건드린 듯한 느낌이...
전 이렇게 뜨네요.. 그래서 if(ptr) 넣어봤는데 되긴 돼더라구요
이게 릭은 아닐 테고, 초기화가 안된 상태인가..? 동적 할당 메모리 삭제를 안 해서 그럴까요...? 일단 다른 시험 공부 중이어서 나중에 각잡고 고민해보아야 겠어요...
혹시 코드 공유 가능하세요?-?
모든 NULL을 nullptr로 고친거하고 operator++쪽 수정만 했어요
void operator++ (int) {
if (ptr) {
ptr = ptr->next;
}
}
null로 초기화된 노드는 그냥 data건 next건 아무것도 없고, 이거를 ptr = ptr->next를 하니까 ptr이 null일때 오류가 난거같네요.