디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅠㅠ(121.187) 2012.03.31 16:02:01
조회 102 추천 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/17 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
308985 구글은 만우절도 갑이네 (1.214) 12.04.01 112 0
308983 이게 왜 잘못된거야? [8] 1234(114.199) 12.04.01 140 0
308981 자연수n에대해 합이 n이되는 정수 리스트중 곱이 최대가되는 것 [36] 1(121.150) 12.04.01 165 0
308980 LPIK 라던가 CISSP 같은 국제공인 자격증 도움됨?? [6] ㅁㄴㅇㄹ(59.30) 12.04.01 141 0
308979 외국에살고있는 놈인데 한국가서 프로그래밍배우려고함 조언좀 [4] Aussie!(112.213) 12.04.01 137 0
308975 왜 같은걸 수행하는 기능이 api와 com으로 선택할수 있는거야? [5] ㅇㅇ(121.162) 12.04.01 65 0
308973 php 에러 왜난건지 아는분 도와주세요 굽신굽신 ㅠ [2] phpㅠㅠ(211.247) 12.04.01 56 0
308972 ㅠㅠ회사짤림 ㅠㅠ [2] ㅠㅠ(211.117) 12.04.01 144 0
308968 형들 sequence class 이란게... [4] ㄴㅁㄻㄴㄹ(175.210) 12.04.01 62 0
308967 형들..상담좀 해주세요(인간을 대하는 태도?) [2] 어쩌지(61.80) 12.04.01 85 0
308966 이런것도 프로그래밍으로 답구할수있냐? [7] 솨발(121.134) 12.04.01 124 0
308965 야 쉬펄 나 회사 때려쳣다 [5] 개심심(121.140) 12.04.01 201 0
308963 OS.js 올라와서 드가봤는데 저게 뭐죠? 웹기반 OS? [4] C언어찌랭이갤로그로 이동합니다. 12.04.01 117 0
308962 교황아 [33] 정통27갤로그로 이동합니다. 12.04.01 177 0
308959 알집으로 egg파일 암호걸고 압축했는데 이거 깨는방법있을까? [1] cyber갤로그로 이동합니다. 12.03.31 253 0
308958 아놔콘다야 이러케 설명해주면되는거임?? [26] 교황갤로그로 이동합니다. 12.03.31 141 0
308957 횽들 짧은 코드인데 계속 구문 오류가 생겨서 컴파일이 안됨 도와줭 ㅜㅜ [5] ㅇㅇㄴㅇ(116.33) 12.03.31 108 0
308953 오빠 나 저거 사줘! 정수정•‿•갤로그로 이동합니다. 12.03.31 125 0
308951 나도 점점 컴덕후가 되가는건가... [1] U10갤로그로 이동합니다. 12.03.31 67 0
308950 직장인 학원 주말반 보통 얼마정도 하나요? ㅇㅇ(210.113) 12.03.31 35 0
308949 HRESULT 정의를 보면 DontMeddle갤로그로 이동합니다. 12.03.31 44 0
308948 도와주세요.. 리눅스 segmentation fault 오류 [4] eee(165.132) 12.03.31 158 0
308947 형들은 SK C&C 랑 NHN 이 합격됬다면 어디갈래 [3] 사랑해형들(121.140) 12.03.31 278 0
308946 문득 미래 진로에 대해서 생각해봤는데 [1] 12(59.12) 12.03.31 58 0
308945 음악파일 입출력 어떻게하는건지 아는사람 있어? [1] 개뇬갤로그로 이동합니다. 12.03.31 75 0
308944 헐.. OS.js 신기하다 Rei@디씨갤로그로 이동합니다. 12.03.31 68 0
308942 아놔콘다야 이 말임 [8] 교황갤로그로 이동합니다. 12.03.31 134 0
308940 HRESULT bool ?? 이거 누구아시는분 [6] DontMeddle갤로그로 이동합니다. 12.03.31 71 0
308937 이것도 일종의 직업병인가.... [1] 아놔콘다갤로그로 이동합니다. 12.03.31 95 0
308936 컴공 교수들 포인터에 트라우마가 있더라 [9] ㅇㅁ(114.199) 12.03.31 243 0
308935 무가 잘못됏는지 찾아줘요 [1] 자바쟁이(110.46) 12.03.31 49 0
308934 구인사이트 이력서올리고 연락오면 어떻게해야되? [1] ㅁㅁㅁㅁ(121.130) 12.03.31 86 0
308932 요즘 node.js가 뜬다고 하던데 [7] Rei@디씨갤로그로 이동합니다. 12.03.31 126 0
308931 성님들 이거 힌트좀 줄수 있겠는가?? [2] 렙터갤로그로 이동합니다. 12.03.31 53 0
308930 약간 병진같은 질문이지만 네트워크관리사 2급 필기 준비하는데.. 내공냠냠(112.161) 12.03.31 41 0
308929 리눅스 명령어중에 [4] 데헤ㅐㅅ(220.86) 12.03.31 70 0
308928 횽들이 그렇게 해킹을 잘해? [7] 5써ㅃ갤로그로 이동합니다. 12.03.31 165 0
308927 ms procject 에서 visio 넘겨서 cpm 그리는거 안되나요 [1] topandbottom갤로그로 이동합니다. 12.03.31 34 0
308925 프로그램 짤 때 변수 몇개 써야될지 어떻게 아는거? [1] ㅇㅁ(114.199) 12.03.31 51 0
308923 이중 당신이 짜본 것은 몇개? [5] 생물학(211.234) 12.03.31 142 0
308922 2012 년 적절한 초봉은 얼마? [1] sk(211.177) 12.03.31 171 0
308920 남자들 샤워할때... [2] 자바초보(111.118) 12.03.31 138 0
308919 C++ 프로젝트 구조 어디 좋은 거 없음? [2] SODMaster갤로그로 이동합니다. 12.03.31 92 0
308918 얘들아 도와주라 피자쏜다 [1] 교황갤로그로 이동합니다. 12.03.31 103 0
308917 아놔콘다야 도와조 [3] 교황갤로그로 이동합니다. 12.03.31 75 0
308915 이 열줄을 해독해줄사람 [1] 낄럽슨갤로그로 이동합니다. 12.03.31 61 0
횽들 연산자 오버로딩좀 알려주새요.. ㅠㅠ(121.187) 12.03.31 102 0
308912 간단?한 콘솔게임 코딩하려는데요 [1] 초잉여(106.103) 12.03.31 60 0
308908 동기중에 여자 있는데 동기로 안보이네 ㅇㅇ(210.113) 12.03.31 63 0
308907 형들 C로 배열 안쓰고 최대,최소,합계,평균 구하는거 질문인데 ㅠㅠ [2] 공도리(27.35) 12.03.31 64 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2