컴공 일기56
게시글 주소: https://dev.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를 선물하세요.
-
마치 애니주인공처럼 달렸다 6 2
셔틀잡으러
-
아니 어째서 0 0
명예 센츄 없음?
-
야 나와봐 4 1
나랑 편의점 가자
-
ㅇㅈ 2 2
ㅇㅈ 오브 코리아
-
여러분들은좋아하는수있으신가요 16 3
저는 28을 좋아함요
-
노베로 시작해서 어제 더프 공통 3점은 다맞고 11번 13번 맞았는데 오늘 작년...
-
조리병보고 꿀이라고 하는새끼들 12 1
다 그대로 튀김기앞에 세워놓고싶다 진심으로인간혐오옴
-
무물보 받아요 4 0
공부 ㄹㅈㄷ로 안하고 놀기만 함여
-
맨날 소우타 아니면 켄쨩이야
-
물리 실모에서 많이 보이는 수 0 1
바로 23 19,20번 역에보에서 h로 많이 본 거 같음
-
나 세미 센츄임 5 3
인정해주삼
-
오르비언들 다 기만자임 20 3
나만아싸고다알고보니친구한명씩은있더라..
-
이름이뭐에요? 어느과에요? mbti뭐에요? 고향이어디에요? 시발 이런거...
-
근데 님들아 센츄 교육청 기준이 머임 10 1
궁금함
-
ㄹㅈㄷ 공하싫 1 0
수학 문제 생긴 꼬라지가 ㅈ같이 생겨서 공부 안하고 싶음
-
화학 좀 ㅈㅂ 0 1
도와주세요 내신인데 m,n 갑을 못 구하겠어여 식 조작 ㅈㄴ 해야될 거 같은데
-
어떻겍 역이름이 똥꾸릉 3 1
엥
-
고민되는데 0 0
수학 라이브를 계속 들을까요?? 강기원쌤 듣는한데 엔제 풀다가 서바때나 들어갈까요?
-
인서울 못할거같다 18 2
최근에 한 생각이다
-
망갤테스트 6 1
-
과팅 2개 잡았음 나 7 0
아니근데 두개다서울임 우리학교내에서 잡고싶었는데 ㄹㅇ 순식간에 마감됨
-
김승리t 커리 1 0
Tim나 그 다음 커리부터 들을까 생각중이었는데 작수 2등급이면 어떤거부터 들으면 될까요??
-
3덮 사문이 쉬웠던거임? 2 0
왜 다쉽다하노 턱턱 막히던데 국수영만 해서 그런가 작년 6,9,11 112고 작년에...
-
아 인증해야겠다 3 0
.
-
내글에시발왜이리댓글이안달려 8 0
아오
-
진짜 개 그지같네 3 0
2505 왤케 어렵냐....
-
인증 몇개 보니까 그냥 기만질하는 거임..
-
본인 책상 근황 0 0
개판 5분전임
-
섭웨이 잠봉 낫벧 4 0
잠봉플러스 화이트 아메치즈 피클 양파 양상추 올리브 피망 틈메이러 렌치 허니머스타드 후추 더블초코칩
-
옵붕이들 인증하면 약간 괴리감듦 10 0
얘네가 실존하는 사람이란건 알지만 계속 오댕이임티 이런거 쓰다보니 오댕이 이미지가...
-
영어를 십몇년동안 했더니 0 1
문법이 체화가 돼버려서 설명을 못하겠음
-
정법 표점 4 1
아니 정법 고려중인데 표점 언급이 왤케많음? 그렇게창남? 수능날 변수 젤 적을거같은데 고민되네
-
수학 ㄹㅈㄷ로 안풀림 1 2
N제 첫번째 문제부터 안풀려서 답지봄 ㅂㅅ 등장!
-
세트사이 휴식시간 추천받음 15 0
병약추소년이라 운동루ㅜ틴 짜기힘드네
-
허들링 난이도 4 1
26 허들링(인강) 난이도 어느정도임?
-
루트안에 이차방정식 이거 삼각치환 말구 어케추는거였죠? 2 0
뭐 있었는데 까머긂,,,, 도형이었나
-
우우래우우래 2 0
쌍윤이 우우래
-
슈타게 극장판 짱 재밌당 1 1
-
우우 8 1
우
-
오르비 똥테 이상만 받는 학원 2 0
만들면 개재밌을거같음ㅋㅋㅋㅋ
-
다음생은 말로 태어나ㆍ서 .. 3 2
저 넓은ㄴ 초원을 뛰어보고싶ㅂ구나 ..
-
조언부탁드려요 5 0
그냥 아무 조언이나 해 주세요,,
-
예아 안될거 뭐있노
-
어떻게 된 일인지 답변이 안 달리네 ㅋㅋㅋ
-
수학 모의고사 풀 거 ㅊㅊ 좀 1 1
3모 대비로 수학 풀거 ㅊㅊ좀 2503은 이미 풂
-
고생했더니 치킨마렵노 14 0
이걸먹어말어
-
끝나고 직접 프린트해서 푸는 방법밖에 없는 건가요? 아님 어떻게... 신청해서 보는...
-
배부른데 치킨시킴 13 0
ㅁㅌㅊ?
-
몬스터 신상 먹엇음 14 3
처음에는 아무맛도 안 나는 줄 알앗는데 계속 먹어보니까 맛이 나긴 함 토레타맛 나 흠…
-
이걸해야먹고살수가있는게 고2 고1은 이게 통합과학 시대라


컴공주님 파이팅..!
교수님께서 이게 시험에 분명 어려운 문제로 나온다고 하셨어요 ㅜㅜㅜ 내일 아침까지 더 고민해봐야겠어요!안녕히 주무세용!
음.. 버그 고치셧나요?
전에 올리던 코드 말인가용?
네네! 원인을 알아냈조 ㅎㅎㅎ
이 코드 ㅇ오류 원인은 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일때 오류가 난거같네요.