VioletaBabel
4일 : 단방향 리스트 본문
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 |
'BCA > 1. C,C++,C#' 카테고리의 다른 글
6일 : 가위바위보, 클래스, 생성자, 소멸자, 함수 오버로딩 (0) | 2018.02.12 |
---|---|
5일 : 재귀 함수와 이진 트리 (0) | 2018.02.09 |
3일 : 포인터 입문, 아스키코드, 문자열 기초 (0) | 2018.02.07 |
2일 : 최대공약수, 최소공배수, 폭탄처리반게임, 스택, 큐 (0) | 2018.02.06 |
1일 : 별찍기, 구구단 (0) | 2018.02.05 |
Comments