디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

횽들 연산자 오버로딩좀 알려주새요..

ㅠㅠ(121.187) 2012.03.31 16:02:01
조회 107 추천 0 댓글 0

#include <iostream>
#include <string>
#include <new>
#include <fstream>

using namespace std;

template <class ItemType>
struct Node
{
ItemType item;
Node<ItemType>* next;
};
template <class ItemType>
class SortedLinkedList
{
private:
int size;
Node<ItemType>* head;
Node<ItemType>* scanPos;
public:
SortedLinkedList();
~SortedLinkedList();
bool isEmpty() const;
bool isFull() const;
int getSize() const;
void insert(const ItemType& data, bool& success);
void remove(const ItemType& data, bool& found);
void retrieve(const ItemType& data, bool& found) const;
void reset();
void getNext(ItemType& data);
void print(ostream& out) const;
};
template <class ItemType>
SortedLinkedList<ItemType>::SortedLinkedList()
{
size = 0;
head = NULL;
}
template <class ItemType>
SortedLinkedList<ItemType>::~SortedLinkedList()
{
Node<ItemType>* tmp;
while (head != NULL)
{
tmp = head;
head = head->next;
delete tmp;
}
}
template <class ItemType>
bool SortedLinkedList<ItemType>::isEmpty() const
{
return size == 0;
}
template <class ItemType>
bool SortedLinkedList<ItemType>::isFull() const
{
Node<ItemType>* tmp;
try
{
tmp = new Node<ItemType>;
delete tmp;
return false;
}
catch (bad_alloc e)
{
return true;
}
}
template <class ItemType>
int SortedLinkedList<ItemType>::getSize() const
{
return size;
}
template <class ItemType>
void SortedLinkedList<ItemType>::insert(const ItemType& data, bool& success)
{
if (isFull())
{
success = false;
return;
}

Node<ItemType>* tmp; // 삽입할 노드에 대한 포인터
Node<ItemType>* prevNode = NULL; // 스캔하기 위한 포인터의 전포인터
Node<ItemType>* currNode = head; // 스캔하기 위한 포인터

tmp = new Node<ItemType>; // 새로운 노드 만들어 데이터 삽입
tmp->item = data;
tmp->next = NULL;

if (head == NULL) // 리스트가 비어있는 경우
{
head = tmp;
success = true;
size++;
return;
}

bool found = false; // 삽입할 위치를 찾으면 true
while (!found)
{
if (currNode->item < data)
{
prevNode = currNode;
currNode = currNode->next;
if (currNode == NULL)
found = true;
}
else
found = true;
}

if (prevNode == NULL) // 맨 앞에 삽입
{
tmp->next = head;
head = tmp;
}
else
{
tmp->next = currNode;
prevNode->next = tmp;
}

success = true;
size++;
}
template <class ItemType>
void SortedLinkedList<ItemType>::remove(const ItemType& data, bool& found)
{
if (isEmpty())
{
found = false;
return;
}

Node<ItemType>* tmp; // 삭제할 노드에 대한 포인터
Node<ItemType>* prevNode = NULL; // 스캔하기 위한 포인터의 앞 포인터
Node<ItemType>* currNode = head; // 스캔하기 위한 포인터

found = false; // 삭제할 위치를 찾으면 true
while (!found)
{
if (currNode->item == data)
{
found = true;
break;
}
else if (currNode->item < data)
{
prevNode = currNode;
currNode = currNode->next;
if (currNode == NULL) // 맨 끝 노드까지 갔으나 찾지 못함
return;
}
else // 데이터가 노드의 값보다 작은 경우 => 찾지 못함
return;
}

if (prevNode == NULL) // 맨 앞의 노드 삭제
{
tmp = head;
head = head->next;
delete tmp;
}
else
{
tmp = currNode;
prevNode->next = currNode->next;
delete tmp;
}

size--;
}
template <class ItemType>
void SortedLinkedList<ItemType>::retrieve(const ItemType& data, bool& found) const
{
found = false;
Node<ItemType>* tmp = head;

while (tmp != NULL && !found)
if (tmp->item == data)
found = true;
else
tmp = tmp->next;
}
template <class ItemType>
void SortedLinkedList<ItemType>::print(ostream& out) const
{
Node<ItemType>* tmp = head;
while (tmp != NULL)
{
out << tmp->item << endl;
tmp = tmp->next;
}
out << endl;
}
template <class ItemType>
void SortedLinkedList<ItemType>::reset()
{
scanPos = head;
}
template <class ItemType>
void SortedLinkedList<ItemType>::getNext(ItemType& data)
{
data = scanPos->item;
scanPos = scanPos->next;
}
int main()
{
StudentRecord s;
SortedLinkedList<int> intList;
SortedLinkedList<string> strList;
SortedLinkedList<StudentRecord> studentList;
bool success;

int num;
string str;
float flo;
ifstream infile;

infile.open("data.txt");
while(infile >> str)
{
num = atoi(str.c_str());
if(isdigit(str.c_str()[0]))
intList.insert(num, success);
else
strList.insert(str, success);
}
cout << "Integers in the list." << endl;
intList.print(cout);
cout << "Strings in the list." << endl;
strList.print(cout);

infile.close();

return 0;
}

이건 텍스트 파일에 랜덤하게 나열되있는 문자열이랑 숫자를 읽어서

문자열은 문자열끼리 숫자는 숫자끼리 정렬해서 출력하는건데 여기까진 됐거든..

근데 이제 학번, 학생 이름, 성적 이렇께 세개의 레코드가 있는 다른 텍스트 파일을 읽어서

그 학생들을 성적순으로 정렬한다음에 콘솔에 출력하려구 해

근데 내가 학생 클래스를 새로 만들어서 연결리스트에 넣으면 다른거랑 달리

학생클래스끼리는 비교를 못하니까 성적순으로 비교해서 정렬할 수 있게 해줘야 되는데

그걸 어덯게 해야될지를 모르겠서.. 알려조 횽들..

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
309373 조낸 오랜만이다 근데 여전히 악성코드 경고는 뜨네. [1] 서현빠돌이갤로그로 이동합니다. 12.04.04 46 0
309372 C질문 하나면 할게요 이중 for문 안에있는 if문에서 break하면 [2] 파괘신(122.128) 12.04.04 227 0
309371 오픈지엘고수형들 도와주세요 [1] 오픈지엘.ㅠ(165.246) 12.04.04 39 0
309370 c언어 고수만 봐라 글쓴놈 이거좀 봐라 ㅡㅡ [3] 색초(203.170) 12.04.04 89 0
309369 서울 기초프로그래밍(c++) 과외해주실분 [12] 성신요대생(58.122) 12.04.04 145 0
309368 자료구조 초급문제.. c언어 중급자형들 소환! [2] 메카돼지(118.176) 12.04.04 74 0
309366 책만 보면 정신이 붕괴 [3] 미쳤dot갤로그로 이동합니다. 12.04.04 60 0
309365 한글 문자열에 대해서 궁금한게 있습니다. [5] 이공(203.230) 12.04.04 60 0
309364 아 슈발 오늘 첫 출근 했는데 [1] 김푸로(112.159) 12.04.04 60 0
309363 이산구조 물어본놈 봐라 ㅇㅁ(114.199) 12.04.04 51 0
309362 자료구조 공부를 시작한지 3일됐는데.. [9] ㅇㅇ(125.178) 12.04.04 176 0
309361 밑에 이산구조 질문한거 [1] ㅇㅁ(114.199) 12.04.04 41 0
309360 형들 html 프레임 이거 어떻게 나눠 ???? [5] dd(117.16) 12.04.04 75 0
309359 c언어 고수만봐라 [7] 프리롤(202.30) 12.04.04 92 0
309357 님들아 컴포넌트가 이해가안되여 쉽게 설명좀해주세요 [1] (124.80) 12.04.04 28 0
309356 형들 C 언어에서 존나 주사위 만드는 법점 알려줘 [2] 강원도(1.177) 12.04.04 74 1
309355 어제 올렸었는데 ㅠ 해결이안됬어여 ㅠ [1] 알고기즘(1.210) 12.04.04 28 0
309353 형들 쓰레드 인데 과제좀 도와주세여 ㅠㅠ 아무리 봐도 모르겠음 [2] 살려주세요(1.210) 12.04.04 83 0
309352 4시간만에 포기.. [3] ㅇㅁ(114.199) 12.04.04 125 0
309351 ★★(긴급) MFC 프로그래밍 초급질문좀 ㅠㅠ (짤有)★★ [3] 제발ㅠ(211.58) 12.04.04 93 0
309350 이산구조 질문 하나만 'ㅡ'... 조공 [9] ㅎㅎ(116.127) 12.04.04 101 0
309349 야 부동 소수점이 뭔말인지 아는사람??? [2] 에이시아(203.90) 12.04.04 50 0
309348 혹시나 석사 과정 지원하실 분은 한번 봐보세요. [2] 칭송받는자갤로그로 이동합니다. 12.04.04 176 0
309347 그냥 살짝 글자만바꾸면 된다메..... Html갤로그로 이동합니다. 12.04.04 36 0
309346 Dev C++과 gcc 중 어느 것이 나은감? [6] 골때려(222.107) 12.04.04 138 0
309345 질문갤~ 질문갤~ 땡칠도사갤로그로 이동합니다. 12.04.04 42 0
309343 데이터베이스 질문좀... [5] 에이시아(203.90) 12.04.04 73 0
309342 리눅스 질문좀... 아오 ㅠㅠ [2] 니ㅎㅁ내꺼갤로그로 이동합니다. 12.04.04 53 0
309340 배열까지 배운실력으로 최초의 프로그램 개발중인데 개어렵다.. [1] ㅇㅁ(114.199) 12.04.04 72 0
309339 형들 내가 두수의 사칙연산 프로그램 을 만들었는데 이렇게되는이유좀 ㅠㅠ [6] ㅇㅇㅎㅎ(59.25) 12.04.04 71 0
309337 이거좀 봐주세요 !!! 자바자바 [4] ㅇㅇ(203.253) 12.04.04 76 0
309335 헐 시발 형들 논리회로 어디까지 시험봐? Aven갤로그로 이동합니다. 12.04.04 28 0
309334 힝.. 다시 질문할게 ㅠㅠ [1] As(112.145) 12.04.04 51 0
309333 그렸다 이모군(175.114) 12.04.04 30 0
309330 논리회로 봄미다 [2] 땡칠도사갤로그로 이동합니다. 12.04.04 87 0
309329 함수내에서 전역변수 선언못하지? [10] (114.199) 12.04.04 142 0
309328 형들 멀티심설치중인데 게속 오류나서 아는형잇음 도와줘 ㅠㅠ [2] ㅇㅇ(61.106) 12.04.04 132 0
309326 부동소수점이 프갤에서 노략질을 일삼고 도주했도다. [1] 빌어먹을야옹갤로그로 이동합니다. 12.04.04 35 0
309323 논리회로 잘하는놈만 봐라 [13] ㅇㅁ(114.199) 12.04.04 138 0
309320 부동소수점. 빌어먹을야옹갤로그로 이동합니다. 12.04.04 58 0
309319 갤 이탈 글 같기는 한데 말이지-_- 도저히 궁금해서 말이지 servlab(175.197) 12.04.04 38 0
309318 MFC 능력자 솬!!! [3] ㅈ뉴비(1.242) 12.04.04 79 0
309317 암만 생각해봐도 내가 미친놈같다 ㅋㅋㅋㅋ [3] 초잉여(106.103) 12.04.04 81 0
309316 비쥬얼스튜디오 여러개 설치해서 써도 되능교? [3] 궁금(116.36) 12.04.04 84 0
309313 부동소수점 , 진리표 채워달라는 새기 , 글 계속 지우면서 먹튀중 [2] [성대아싸]갤로그로 이동합니다. 12.04.04 62 0
309310 리눅스 CUI 에서 GUI 로 어찌전환함? ㅠㅠ [1] 니ㅎㅁ내꺼갤로그로 이동합니다. 12.04.04 140 0
309308 c++ 짜는중인데 좀 도와주세용! [1] 왕초보(117.123) 12.04.04 54 0
309306 자바 한글 입력 질문 (원빈 형들 헬프~) 해외거주중갤로그로 이동합니다. 12.04.04 72 0
309304 고양이는 한굴말 할줄 안다.. iljeomobolt갤로그로 이동합니다. 12.04.04 89 0
309303 내가 진짜 짧은 21년 평생동안 스승한테는 무한 존경 했었는데 [7] 응잉앙앵(203.250) 12.04.04 126 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2