[해시테이블-구현] C++ 구현...
363
1
#include <iostream>
#include <string>
using namespace std;
// 이중 연결 리스트의 노드 정의
class Node {
public:
int playerNumber;
string playerName;
Node* prev;
Node* next;
Node(int num, const string name) : playerNumber(num), playerName(name), prev(nullptr), next(nullptr) {}
};
// 해시 테이블 클래스 정의
class HashTable {
private:
static const int TABLE_SIZE = 10; // 해시 테이블 크기
Node** table; // 해시 테이블 배열
public:
HashTable() {
table = new Node * [TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; ++i) {
table[i] = nullptr; // 초기화
}
}
~HashTable() {
for (int i = 0; i < TABLE_SIZE; ++i) {
Node* current = table[i];
while (current) {
Node* toDelete = current;
current = current->next;
delete toDelete;
}
}
delete[] table;
}
// 삽입 함수
void set(int playerNumber, const string& playerName) {
int index = playerNumber % TABLE_SIZE;
Node* newNode = new Node(playerNumber, playerName);
// 리스트의 맨 앞에 추가
if (table[index]) {
newNode->next = table[index];
table[index]->prev = newNode;
}
table[index] = newNode;
}
// 검색 함수
string get(int playerNumber) {
int index = playerNumber % TABLE_SIZE;
Node* current = table[index];
while (current) {
if (current->playerNumber == playerNumber) {
return current->playerName; // 선수 이름 반환
}
current = current->next;
}
return "선수를 찾을 수 없습니다."; // 선수 없음
}
// 삭제 함수
void remove(int playerNumber) {
int index = playerNumber % TABLE_SIZE;
Node* current = table[index];
while (current) {
if (current->playerNumber == playerNumber) {
if (current->prev) {
current->prev->next = current->next;
}
else {
table[index] = current->next; // 첫 번째 노드 삭제
}
if (current->next) {
current->next->prev = current->prev;
}
delete current;
return;
}
current = current->next;
}
}
};
복잡 스럽네요.. DoublyLinkedList를 가져와서 구현하려고 하니까. 일단.. 안되가지고. 애초애 javascript는 잘 모르겠지만...
string을 넘겨주고 있는데. 만들어준 DoublyLinkedList는 호환되지 않네요..;;
일단. 방법을 좀 찾고 싶었는데.... 흠.. 너무 꼬여버려서. 뭔지 모르겠네요.. 흠.. 스터디에 끌려가서 큰일이네요. 빨리 끝내야 하는데. 하면서 하니까>
#include <iostream>
#include "Hash.h"
using namespace std;
int main()
{
HashTable hash;
hash.set(1, "이운재");
hash.set(4, "최진철");
hash.set(20, "홍명보");
hash.set(6, "유상철");
hash.set(22, "송종국");
hash.set(21, "박지성");
hash.set(5, "김남일");
hash.set(10, "이영표");
hash.set(8, "최태욱");
hash.set(9, "설기현");
hash.set(14, "이천수");
cout << "1번 선수: " << hash.get(1) << endl;
hash.remove(1);
cout << "1번 선수: " << hash.get(1) << endl;
cout << "21번 선수: " << hash.get(21) << endl;
return 0;
}

답변 1
백준 서비스 종료
0
313
1
강의에 나오는 알고리즘이 코테에 많이 나오는건가요?
0
368
0
[질문] 삼성 SW 역량테스트 D-5, 효과적인 학습 커리큘럼 추천 부탁드립니다
0
379
1
독하게 시작하는 C 프로그래밍 완강 후, 자료구조·알고리즘 학습 방향과 언어 선택에 대한 고민
0
368
0
코딩테스트 언어관련
0
422
0
공부 방법 관련.
0
404
0
코딩테스트 준비
0
482
1
알고리즘 과 실전문제풀이
0
432
1
노션링크 공유
0
404
1
1-11 숙제를 진행하던 중
0
385
1
노션 출력
0
441
1
앞으로의 강좌 일정에 대해
0
350
1





