새로새록
[c++]10.리스트 추가 삭제 출력 본문
아래 코드를 기반으로 다양한 type(int double, float) 을 사용하여 추가 삭제 출력 기능을 하는
List class 를 구 현하고 이를 사용하는 프로그램을 작성하라
int command()
{
int num;
cout << "\n\t---- menu ----" << endl;
cout << "\t1. 리스트 추가" << endl;
cout << "\t2. 리스트 삭제" << endl;
cout << "\t3. 리스트 출력" << endl;
cout << "\t4. 프로그램 종료" << endl;
cout << "\n\t입력 --> ";
cin >> num;
return num;
}
int main()
{
CList<type> list; // type형으로 list 선언
type input; // list에 입력 할 데이터
int com; // 선택한 기능
while (1)
{
com = command(); // 기능을 선택
switch (com)
{
case 1: // 추가
cout << "\n추가할 데이터 : ";
cin >> input;
list.Add(input);
break;
case 2: // 삭제
cout << "\n삭제할 데이터 : ";
cin >> input;
list.Delete(input);
break;
case 3: // 출력
list.Print();
break;
case 4: // 프로그램 종료
cout << "\n\t프로그램을 종료합니다\n";
return 0;
break;
default:
break;
}
}
return 0;
}
[참조 1]
template <typename T>
class CList
{
public:
CList();
~CList();
bool IsEmpty(); // list가 비어 있으면 1, 아니면 0
bool IsFull(); // list가 꽉 차 있으면 1, 아니면 0
void Add(T data); // list에 데이터 추가
void Delete(T data); // list에 데이터 삭제
void Print(); // list에 데이터 출력
private:
T m_Array[5]; // 데이터를 저장할 공간
int m_Length; // list에 있는 데이터 수
};
<기본화면>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
vector<int> vector1;
vector<int> vector2;
srand(time(NULL));
for (int i = 0; i < 10; i++)
vector1.push_back(rand() % 11);
for (int i = 0; i < 10; i++)
vector2.push_back(rand() % 21);
vector<int>::iterator iter1_b = begin(vector1);
vector<int>::iterator iter1_e = end(vector1);
vector<int>::iterator iter2_b = begin(vector2);
vector<int>::iterator iter2_e = end(vector2);
cout << "<vector 1>" << endl;
int max1 = 0, min1 = 10;
for (auto iter = iter1_b; iter != iter1_e; iter++) {
cout << *iter << " ";
if (*iter > max1) { max1 = *iter; }
else if (*iter < min1) { min1 = *iter; }
}
cout << endl;
cout << "<vector 2>" << endl;
int max2 = 0, min2 = 20;
for (auto iter = iter2_b; iter != iter2_e; iter++) {
cout << *iter << " ";
if (*iter > max2) { max2 = *iter; }
else if (*iter < min2) { min2 = *iter; }
}
cout << endl << endl;
cout << "최댓값 = " << max1*max2 << endl;
cout << "최솟값 = " << min1*min2 << endl;
}
#include <iostream>
using namespace std;
template <typename T >
class CList {
public:
CList() {
m_Length = 0;
}
bool IsEmpty() {
if (m_Length == 0)
return 1;
else
return 0;
}
bool IsFull() {
if (m_Length == 5)
return 1;
else
return 0;
}
void Add(T data) {
if (!IsFull()) {
m_Array[m_Length] = data;
m_Length++;
}
else
cout << "\n\tList is full.\n";
}
void Delete(T data) {
if (!IsEmpty()){
for (int i = 0; i < m_Length; i++) {
if (m_Array[i] == data) {
m_Length--;
for (int j = i; j < m_Length;j++)
m_Array[j] = m_Array[j+1];
break;
}
}
}
else
cout << "\n\tList is empty.\n";
}
void Print() {
if (IsEmpty())
cout << "\n\tList is empty.\n";
cout << "※ Current List\n";
for (int i = 0; i < m_Length; i++)
cout << m_Array[i]<<"\t";
cout << endl;
}
private:
T m_Array[5];
int m_Length;
};
int command(){
int num;
cout << "\n\t---- menu ----" << endl;
cout << "\t1. 리스트 추가" << endl;
cout << "\t2. 리스트 삭제" << endl;
cout << "\t3. 리스트 출력" << endl;
cout << "\t4. 프로그램 종료" << endl;
cout << "\n\t입력 --> ";
cin >> num;
return num;
}
int main() {
CList<int> list;
int input;
int com;
while (1) {
com = command();
switch (com)
{
case 1:
cout << "\n추가할 데이터 : ";
cin >> input;
list.Add(input);
break;
case 2:
cout << "\n삭제할 데이터 : ";
cin >> input;
list.Delete(input);
break;
case 3:
list.Print();
break;
case 4:
cout << "\n\t프로그램을 종료합니다\n";
return 0;
break;
default:
break;
}
}
}
추가문제.
lsit 오름차순 정렬
#include <iostream>
using namespace std;
template <typename T >
class CList {
public:
CList() {
m_Length = 0;
}
~CList() {}
bool IsEmpty() {
if (m_Length == 0)
return 1;
else
return 0;
}
bool IsFull() {
if (m_Length == 5)
return 1;
else
return 0;
}
void Add(T data) {
if (!IsFull()) {
for (int i = 0; i < m_Length; i++) {
if (m_Array[i] == data) {
cout << "\n\t중복된 데이터가 존재\n";
return;
}
}
m_Array[m_Length] = data;
m_Length++;
for (int i = 0; i < m_Length-1; i++) {
for (int j = 0; j < m_Length-1; j++) {
if (m_Array[j] > m_Array[j + 1]) {
T temp = m_Array[j];
m_Array[j] = m_Array[j + 1];
m_Array[j + 1] = temp;
}
}
}
}
else
cout << "\n\tList is full.\n";
}
void Delete(T data) {
if (!IsEmpty()) {
for (int i = 0; i < m_Length; i++) {
if (m_Array[i] == data) {
m_Length--;
for (int j = i; j < m_Length; j++)
m_Array[j] = m_Array[j + 1];
break;
}
}
}
else
cout << "\n\tList is empty.\n";
}
void Print() {
if (IsEmpty())
cout << "\n\tList is empty.\n";
cout << "※ Current List\n";
for (int i = 0; i < m_Length; i++)
cout << m_Array[i] << "\t";
cout << endl;
}
private:
T m_Array[5];
int m_Length;
};
int command() {
int num;
cout << "\n\t---- menu ----" << endl;
cout << "\t1. 리스트 추가" << endl;
cout << "\t2. 리스트 삭제" << endl;
cout << "\t3. 리스트 출력" << endl;
cout << "\t4. 프로그램 종료" << endl;
cout << "\n\t입력 --> ";
cin >> num;
return num;
}
int main() {
CList<int> list;
int input;
int com;
while (1) {
com = command();
switch (com)
{
case 1:
cout << "\n추가할 데이터 : ";
cin >> input;
list.Add(input);
break;
case 2:
cout << "\n삭제할 데이터 : ";
cin >> input;
list.Delete(input);
break;
case 3:
list.Print();
break;
case 4:
cout << "\n\t프로그램을 종료합니다\n";
return 0;
break;
default:
break;
}
}
}
'소프트웨어융합 > 경희대 c++ 과제' 카테고리의 다른 글
[c++]11. 홀수와 n*n 마방진 (0) | 2020.07.18 |
---|---|
[c++]11.오름차순 정렬 함수 (0) | 2020.07.18 |
[c++]10. 두 벡터의 곱 max min (0) | 2020.07.18 |
[c++]9. stack class (0) | 2020.07.17 |
[c++]9. 숫자 야구 (0) | 2020.07.17 |