BCA/1. C,C++,C#
4일 : 단방향 리스트
Beabletoet
2018. 2. 8. 10:40
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 | #include<iostream> using namespace std; struct Data { int value; Data* pNext; }; int main() { Data *pHead = NULL, *pTemp, *pTemp2; int com = 0; bool in = 0; while (1) { cout << "\n\n1. 입력\n2. 삭제\n3. 출력\n4. 종료\n\n커맨드 입력 : "; cin >> com; if (com == 1) { cout << "값을 입력 : "; cin >> com; Data *pNewData = new Data; pNewData->pNext = NULL; pNewData->value = com; if (pHead == NULL) pHead = pNewData; else { pTemp = pHead; while (pTemp->pNext != NULL) pTemp = pTemp->pNext; pTemp->pNext = pNewData; } } else if (com == 2) { cout << "삭제할 값 입력 : "; cin >> com; pTemp = pHead; if (pHead->value == com) { pHead = pHead->pNext; delete pTemp; } else { while (pTemp->value != com) { if (pTemp->pNext != NULL) { pTemp2 = pTemp; pTemp = pTemp->pNext; } else { in = 1; break; } } if (in) cout << "삭제할 값이 없습니다." << endl; else { pTemp2->pNext = pTemp->pNext; delete pTemp; } in = 0; } } else if (com == 3) { if (pHead != NULL) { pTemp = pHead; while (pTemp->pNext != NULL) { cout << pTemp->value << " "; pTemp = pTemp->pNext; } cout << pTemp->value << endl; } } else if (com == 4) { pTemp = pHead; while (pTemp->pNext != NULL) { pTemp2 = pTemp; pTemp = pTemp->pNext; delete pTemp2; } delete pTemp; return 1; } else cout << "\n값을 잘못 입력하셨습니다!\n\n"; } } | cs |
--위에꺼 수정
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 116 | #include<iostream> using namespace std; struct Data { int value; Data* pNext; }; int main() { Data *pHead = NULL, *pTemp, *pTemp2, *pNewData; int com = 0; bool in = 0; while (1) { cout << "\n\n1. 입력\n2. 삭제\n3. 출력\n4. 종료\n\n커맨드 입력 : "; cin >> com; if (com == 1) { cout << "값을 입력 : "; cin >> com; pNewData = new Data; pNewData->pNext = NULL; pNewData->value = com; if (pHead == NULL) pHead = pNewData; else { cout << "\n어느 값 뒤에 넣으시겠습니까? "; cin >> com; pTemp = pHead; while (pTemp->value != com) { if (pTemp->pNext != NULL) pTemp = pTemp->pNext; else { in = 1; break; } } if (in) cout << "\n입력하신 값 앞에 존재해야 할 값이 없습니다." << endl; else { pTemp2 = pTemp->pNext; pTemp->pNext = pNewData; pNewData->pNext = pTemp2; } in = 0; } } else if (com == 2) { cout << "삭제할 값 입력 : "; cin >> com; pTemp = pHead; if (pHead->value == com) { pHead = pHead->pNext; delete pTemp; } else { while (pTemp->value != com) { if (pTemp->pNext != NULL) { pTemp2 = pTemp; pTemp = pTemp->pNext; } else { in = 1; break; } } if (in) cout << "삭제할 값이 없습니다." << endl; else { pTemp2->pNext = pTemp->pNext; delete pTemp; } in = 0; } } else if (com == 3) { if (pHead != NULL) { pTemp = pHead; while (pTemp->pNext != NULL) { cout << pTemp->value << " "; pTemp = pTemp->pNext; } cout << pTemp->value << endl; } } else if (com == 4) { pTemp = pHead; while (pTemp->pNext != NULL) { pTemp2 = pTemp; pTemp = pTemp->pNext; delete pTemp2; } delete pTemp; return 1; } else cout << "\n값을 잘못 입력하셨습니다!\n\n"; } } | cs |
--위에 오류 수정
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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | #include<iostream> using namespace std; struct Data { int value; Data* pNext; }; int main() { Data *pHead = NULL, *pTemp, *pTemp2, *pNewData; int com = 0; bool in = 0; while (1) { cout << "\n\n1. 입력\n2. 삭제\n3. 출력\n4. 종료\n5. 삽입\n\n커맨드 입력 : "; cin >> com; if (com == 1) { cout << "값을 입력 : "; cin >> com; pNewData = new Data; pNewData->pNext = NULL; pNewData->value = com; if (pHead == NULL) pHead = pNewData; else { pTemp = pHead; while (pTemp->pNext != NULL) pTemp = pTemp->pNext; pTemp->pNext = pNewData; } } else if (com == 5) { cout << "값을 입력 : "; cin >> com; pNewData = new Data; pNewData->pNext = NULL; pNewData->value = com; if (pHead == NULL) pHead = pNewData; else { cout << "\n어느 값 뒤에 넣으시겠습니까? "; cin >> com; pTemp = pHead; while (pTemp->value != com) { if (pTemp->pNext != NULL) pTemp = pTemp->pNext; else { in = 1; break; } } if (in) cout << "\n입력하신 값 앞에 존재해야 할 값이 없습니다." << endl; else { pTemp2 = pTemp->pNext; pTemp->pNext = pNewData; pNewData->pNext = pTemp2; } in = 0; } } else if (com == 2) { cout << "삭제할 값 입력 : "; cin >> com; if (pHead != NULL) { pTemp = pHead; if (pHead->value == com) { pHead = pHead->pNext; delete pTemp; } else { while (pTemp->value != com) { if (pTemp->pNext != NULL) { pTemp2 = pTemp; pTemp = pTemp->pNext; } else { in = 1; break; } } if(!in) { pTemp2->pNext = pTemp->pNext; delete pTemp; } } } else in = 1; if (in) cout << "삭제할 값이 없습니다." << endl; in = 0; } else if (com == 3) { if (pHead != NULL) { pTemp = pHead; while (pTemp->pNext != NULL) { cout << pTemp->value << " "; pTemp = pTemp->pNext; } cout << pTemp->value << endl; } else { cout << "출력할 값이 없습니다." << endl; } } else if (com == 4) { if (pHead != NULL) { pTemp = pHead; while (pTemp->pNext != NULL) { pTemp2 = pTemp; pTemp = pTemp->pNext; delete pTemp2; } delete pTemp; } return 1; } else cout << "\n값을 잘못 입력하셨습니다!\n\n"; } } | cs |