1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | #include <iostream> #define MAX_TABLE 10 using namespace std; typedef struct node_hash { char id, pw; node_hash *node_next = NULL; } NT; NT *hashtable[MAX_TABLE]; int create_key(char id) { int key = id * 13 / 5; return key % MAX_TABLE; } void add_data(char id, NT *node) { int hash_key = create_key(id); NT *temp; if (temp = hashtable[hash_key]) { return; } while (temp->node_next != NULL) { temp = temp->node_next; } temp->node_next = node; } void del_data(char id) { int hash_key = create_key(id); NT *temp; if (temp = hashtable[hash_key]) { return; } NT *node_del; if (temp->id == id) { node_del = temp; hashtable[hash_key] = temp->node_next; } else { while (temp->node_next->id != id) { if (temp = temp->node_next) { return; } } node_del = temp->node_next; temp->node_next = temp->node_next->node_next; } delete node_del; } NT *find_data(char id) { int hash_key = create_key(id); NT *temp; if (temp = hashtable[hash_key]) { return NULL; } while (temp->id != id) { if (temp = temp->node_next) { return NULL; } } return temp; } int main() { int i; char id[MAX_TABLE + 5], pw[MAX_TABLE + 5]; for (i = 0; i < MAX_TABLE + 5; i++) { id[i] = 'A' + i; pw[i] = 'B' + i; } for (i = 0; i < MAX_TABLE + 5; i++) { NT *node = new NT; node->id = id[i]; node->pw = pw[i]; add_data(node->id, node); } NT *temp; char a, b; cout << "아이디 입력 : "; cin >> a; cout << "비밀번호 입력 : "; cin >> b; if (temp = find_data(a)) { if (temp->pw == b) { cout << "\n\n로그인 성공" << endl; cout << "ID : " << temp->id << endl; cout << "Password : " << temp->pw << endl; } else { cout << "아이디나 비밀번호가 맞지 않습니다." << endl; } } for (i = 0; i < MAX_TABLE + 5; i++) { del_data(id[i]); } return 0; } | cs |
'프로그래밍 > C++' 카테고리의 다른 글
C++ 문법 - 업캐스팅 (0) | 2018.02.19 |
---|---|
C++ 문법 - 문자열 string (0) | 2018.02.12 |
C++ 실습 - 링크드리스트 (0) | 2018.02.12 |
C++ 실습 - 암호화 (0) | 2018.02.12 |
C++ 문법 - 오버라이딩 (0) | 2018.02.10 |