디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅠㅠ(121.187) 2012.03.31 16:02:01
조회 104 추천 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 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
309119 이거 어쩜 ...ㅜㅜ [5] 소보루빵갤로그로 이동합니다. 12.04.02 79 0
309118 영어권 나라가 확실히 대우는 좋지... [4] 아놔콘다갤로그로 이동합니다. 12.04.02 122 0
309115 프갤형들 이력서썻을때 희망연봉 얼마적엇음? [1] ㅁㅁㅁㅁ(223.195) 12.04.02 164 0
309114 연봉 이야기들 하길래 내 연봉을 계산해봤더니 [3] 초잉여(106.103) 12.04.02 201 0
309112 횽들 미적분 프로그램도 만들수있어?? [3] 현기증난다(58.74) 12.04.02 138 0
309111 si가 어떻길래 그렇죠??? [1] 김si(182.211) 12.04.02 107 0
309110 개발자 의 첫월급은./... [7] 빌어먹을야옹갤로그로 이동합니다. 12.04.02 215 0
309109 왕기초]]요기에 왜 소문자를입력하시오가 2개씩 나와?? [6] 칰정갤로그로 이동합니다. 12.04.02 67 0
309107 요번 상반기는 SI 업체만 열림 [2] [성대아싸]갤로그로 이동합니다. 12.04.02 160 0
309106 ㅋㅋ 콩찌갤로그로 이동합니다. 12.04.02 32 0
309104 근데 솔직히 화가나 미칠 지경이다.. [3] ㅇㅇ(58.102) 12.04.02 82 0
309103 글쓰기는 잘되나?? [2] 이문동쮸쮸바갤로그로 이동합니다. 12.04.02 49 0
309102 프로그래밍으로 2년넘게 밥먹고 있는데.. [2] ㅇㅇ(58.102) 12.04.02 135 0
309101 요새좀 무기력한듯 [1] 금고래갤로그로 이동합니다. 12.04.02 32 0
309100 20대 중반 중학교 수학도 재대로 모르는 놈 [4] 초잉여(106.103) 12.04.02 171 0
309097 한게임에서 만든 게임오븐 아는횽 있나여? [1] 332(222.121) 12.04.02 36 0
309094 static 질문 [16] ㅇㅇ(58.102) 12.04.02 127 0
309092 전자게이들 헬프 미쳤dot갤로그로 이동합니다. 12.04.02 53 0
309091 경영다니는 놈이 프갤에 와서 싸게 부려먹을라고 캤는데 넘어가면 안되져 [4] [성대아싸]갤로그로 이동합니다. 12.04.02 137 0
309090 구인사이트에 이력서올리고 먼저연락온곳은 대부분 비교적 안좋아?? [10] ㅁㅁㅁㅁ(110.70) 12.04.02 173 0
309088 액션 스크립트 좀 하시는 분 잡귀민갤로그로 이동합니다. 12.04.02 44 0
309087 아랫글을 보니.. [1] 빌어먹을야옹갤로그로 이동합니다. 12.04.02 37 0
309085 타이머를 만들려고 하는데요. [3] 인생(222.102) 12.04.02 71 0
309084 c++로 로또 프로그램을 만들려고 하는데... [3] 초보(117.123) 12.04.02 73 0
309083 주임이 기분이 안좋은갑다;;;;; [1] Html갤로그로 이동합니다. 12.04.02 72 0
309082 형들 왕초보인데 질문점.. 개초보(61.106) 12.04.02 40 0
309081 전번에 커뮤니티 만든다고 한 놈인데 [4] 찌부된초코빵갤로그로 이동합니다. 12.04.02 80 0
309077 형들 CRect의 개념좀 이해시켜줘 [3] 세달뒤면몸짱갤로그로 이동합니다. 12.04.02 87 0
309074 if문 질문있습니다. [2] 초잉여(106.103) 12.04.02 63 0
309071 MFC관련 뭐하나만 알려줘; [7] 모자란동생(61.109) 12.04.02 82 0
309070 WINAPI로 ReadWriteLock 만드는거 질문점... SODMaster갤로그로 이동합니다. 12.04.02 61 0
309069 네이버 백신 스마트 디펜서인가 짱나네.. ㅇㅇ(58.102) 12.04.02 72 0
309067 오랜만입니다 [1] +어게인갤로그로 이동합니다. 12.04.02 31 0
309066 군대가기전에 뭐할까.. [3] ㅁㄴㅇㅁㄴㅇ(182.214) 12.04.02 85 0
309065 하찮은 숙제말고 [2] 페고떼찌갤로그로 이동합니다. 12.04.02 112 0
309064 유니코드를 구분하기위해 앞에 1을 붙인다는게뭔말이에요? [1] ●알콩이갤로그로 이동합니다. 12.04.02 72 0
309063 이거 책이 설명이 잘못된거에요?(java) [3] ●알콩이갤로그로 이동합니다. 12.04.02 73 0
309062 재귀함수로 팩토리얼값 구하는 프로그램.. [6] ㅇㅁ(114.199) 12.04.02 127 0
309061 자바 공부하는데 실수형 상수 이해안가는것 [2] ●알콩이갤로그로 이동합니다. 12.04.02 149 0
309060 자바의 syncronized wait notifyAll 처럼... SODMaster갤로그로 이동합니다. 12.04.02 97 0
309059 원래 소스는 즉흥적으로 짜는거에요? [18] ㅇㅁ(114.199) 12.04.02 217 0
309058 아 안드로이드존나 환경구축하기 스트레스바든ㄴ다 ㅡㅡ [3] 니 코 가 뭐갤로그로 이동합니다. 12.04.02 67 0
309057 형들 과제하는데 질문좀ㅠㅠ [2] 나가사키짱깨갤로그로 이동합니다. 12.04.02 41 0
309056 지역변수 질문 [11] ㅇㅁ(114.199) 12.04.02 68 0
309055 형들 나 과제 인데 급해 ㅠㅠ 개촙 .. .ㅠ [8] domangza갤로그로 이동합니다. 12.04.02 96 0
309053 지역변수 가리움 적용 질문 [1] ㅇㅁ(114.199) 12.04.02 44 0
309052 아 미치곘음 2차원 배열ㅋㅋㅋㅋ 프밍좆뉴비(211.44) 12.04.02 144 0
309051 다차원배열 질문 하나만 할꼐 형들 [2] 프밍좆뉴비(211.44) 12.04.02 46 0
309050 형들 C++ 에 관한건데 질문 받아주면 감사할께 [3] ㅂㅁㅋ(175.210) 12.04.02 46 0
309049 SQL 2008 늅늅 질문이여 [1] 얌얌(112.158) 12.04.02 27 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2