#include "Cnumber.h"



Cnumber::Cnumber()

{

m_nNumber = 0;

}


Cnumber::Cnumber(int n)

{

m_nNumber = n;

}


Cnumber operator+(int n, const Cnumber& num)

{

return num.m_nNumber + n;

}

//--------------------------------------------------------------

Cnumber Cnumber::operator+(Cnumber num)

{

Cnumber result;

result.m_nNumber = this->m_nNumber + num.m_nNumber;

return result;

}


Cnumber Cnumber::operator-(Cnumber num)

{

Cnumber result;

result.m_nNumber = this->m_nNumber - num.m_nNumber;

return result;

}


Cnumber Cnumber::operator*(Cnumber num)

{

Cnumber result;

result.m_nNumber = this->m_nNumber * num.m_nNumber;

return result;

}


Cnumber Cnumber::operator/(Cnumber num)

{

Cnumber result;

result.m_nNumber = this->m_nNumber / num.m_nNumber;

return result;

}

//--------------------------------------------------------------

Cnumber Cnumber::operator=(const Cnumber& num)

{

this->m_nNumber = num.m_nNumber;

return *this;

}

//--------------------------------------------------------------

bool Cnumber::operator==(const Cnumber& num)

{

return this->m_nNumber == num.m_nNumber;

}


bool Cnumber::operator!=(const Cnumber& num)

{

return this->m_nNumber != num.m_nNumber;

}


bool Cnumber::operator<(const Cnumber& num)

{

return this->m_nNumber < num.m_nNumber;

}


bool Cnumber::operator>(const Cnumber& num)

{

return this->m_nNumber > num.m_nNumber;

}


bool Cnumber::operator<=(const Cnumber& num)

{

return this->m_nNumber <= num.m_nNumber;

}


bool Cnumber::operator>=(const Cnumber& num)

{

return this->m_nNumber >= num.m_nNumber;

}

//--------------------------------------------------------------

Cnumber Cnumber::operator++()

{

return this->m_nNumber++;

}


Cnumber Cnumber::operator--()

{

return this->m_nNumber--;

}

//--------------------------------------------------------------

Cnumber Cnumber::operator+=(const Cnumber& num)

{

return this->m_nNumber += num.m_nNumber;

}


Cnumber Cnumber::operator-=(const Cnumber& num)

{

return this->m_nNumber -= num.m_nNumber;

}


Cnumber Cnumber::operator*=(const Cnumber& num)

{

return this->m_nNumber *= num.m_nNumber;

}


Cnumber Cnumber::operator/=(const Cnumber& num)

{

return this->m_nNumber /= num.m_nNumber;

}

//--------------------------------------------------------------

void Cnumber::Print()

{

cout << m_nNumber << endl;

}


Cnumber::~Cnumber()

{

}

'[C], [ C++]' 카테고리의 다른 글

단순 파일 입출력 함수 코드  (0) 2015.05.28
함수 포인터 및 함수  (0) 2015.05.28
링크드 리스트(Stack)  (0) 2015.05.28
링크드 리스트(Queue)  (0) 2015.05.28
링크드 리스트 클래스 - Linked_List  (0) 2015.05.28

#include "Linked_List.h"



Linked_List::Linked_List()

{

pHead = 0;

}



Linked_List::~Linked_List()

{

}


void Linked_List::Add()

{

int input = 0;


cout << "데이터 입력(정수만 가능) : ";

cin >> input;


if (pHead == 0)//노드 처음 생성 및 데이터 입력

{

pHead = new Linked_List;//pHead에 메모리 할당.

pHead->Data = input;//pHead 노드의 데이터 저장 변수에 입력된 데이터를 저장.

pHead->pBackward = 0;//다음 노드의 주소값을 저장할 포인트 변수를 NULL로 초기화.

}

else//이후 노드의 추가 생성 및 데이터 입력.

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

while (temp->pBackward)//복사된 temp가 가진 pNext에 담긴 다음 노드의 주소값이 NULL인지 아닌지 확인.

{//NULL이 아니면 아래의 것을 실행.

temp = temp->pBackward;//temp노드가 가진 다음 노드의 주소값을 temp에 복사.

}

temp->pBackward = new Linked_List;//temp노드가 가진 다음 노드의 포인트 변수에 새로운 노드 생성 및 연결.

temp = temp->pBackward;//temp노드가 가진 다음 노드의 주소값을 temp에 복사.

temp->Data = input;//노드에 입력된 데이터를 저장.

temp->pBackward = 0;//다음 노드의 주소값을 저장할 포인트 변수를 NULL로 초기화.

}

}


void Linked_List::Display()

{

//저장된 데이터를 확인

if (pHead == 0)

{

cout << "데이터가 없습니다." << endl;

}

else//저장된 데이터 출력

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

cout << "입력된 데이터" << endl;

cout << temp->Data << endl;//저장된 데이터를 출력

while (temp->pBackward)//복사된 temp가 가진 pNext에 담긴 다음 노드의 주소값이 NULL인지 아닌지 확인.

{//NULL이 아니면 아래의 것을 실행.

temp = temp->pBackward;//temp에 temp->pNext가 가리키는 다음 노드의 주소를 연결!

cout << temp->Data << endl;

}

cout << "데이터 출력 완료" << endl;

}

}


void Linked_List::All_Delete()

{

//저장된 데이터를 확인

if (pHead == 0)

{

cout << "데이터가 없습니다." << endl;

}

else

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

while (pHead)//노드의 끝까지 반복. NULL이면 그만!

{

temp = temp->pBackward;//temp에다가 temp->pNext에 담긴 다음 노드의 주소를 연결.

delete pHead;//앞 노드를 삭제.

pHead = temp;//temp노드를 pHead에 복사.

}

pHead = 0;

cout << "모든 데이터를 삭제하였습니다." << endl;

}

}


void Linked_List::Stack()

{

int i;

//저장된 데이터를 확인

if (pHead == 0)

{

cout << "데이터가 없습니다." << endl;

}

else

{

Linked_List* temp = 0;

Linked_List* A_temp = 0;

while (pHead)

{

temp = pHead; i = 1;

while (temp->pBackward)//노드의 끝까지 반복. NULL이면 그만!

{

A_temp = temp;

temp = temp->pBackward;

i++;

}

cout << i << "번째 데이터 출력 : " << temp->Data;

delete temp;

if (i == 1)

pHead = 0;

else

A_temp->pBackward = 0;

cout << "삭제\n";

}

cout << "모든 데이터를 삭제하였습니다." << endl;

}

}


void Linked_List::Serch()

{

int d = 0, select = 0;

Linked_List* temp = pHead;


cout << "검색 방식 선택\n";

cout << "데이터 값(1), 인덱스 값(2)\n";

cout << "입력 : ";

cin >> select;


switch (select)

{

case 1 :

cout << "찾으시려는 데이터의 값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


while (temp)

{

if (temp->Data == d)

{

cout << "찾으시는 데이터를 확인하였습니다.\n";

}

else if (temp->Data == 0)

{

cout << "찾으시는 데이터가 존재하지 않습니다..\n";

}

else

{

temp = temp->pBackward;

}

}

break;

case 2 :

cout << "찾으시려는 데이터의 인덱스값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


Linked_List* temp = pHead;

for (int i = 0; i < d; i++)

{

temp = temp->pBackward;

}

if (temp != 0)

{

cout << "찾으시는 인덱스의 데이터 값 : " << temp->Data << endl;

}

else

{

cout << "찾으시는 인덱스의 위치에 데이터가 존재하지 않습니다.\n";

}

break;

}

}


void Linked_List::Delete()

{

int d = 0, select = 0;

Linked_List* A_temp = 0;

Linked_List* temp = pHead;


cout << "삭제 방식 선택\n";

cout << "데이터 값(1), 인덱스 값(2)\n";

cout << "입력 : ";

cin >> select;


switch (select)

{

case 1:

cout << "삭제 하시려는 데이터의 값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


while (temp)

{

if (pHead->Data != d && temp->Data == d)

{

A_temp->pBackward = temp->pBackward;

delete temp;

}

else if (pHead->Data == d)

{

temp = temp->pBackward;

delete pHead;

pHead = temp;

}

else

{

A_temp = temp;

temp = temp->pBackward;

}

}

break;

case 2:

cout << "삭제 하시려는 데이터의 인덱스값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


for (int i = 0; i < d; i++)

{

A_temp = temp;

temp = temp->pBackward;

}

if (temp != 0 && pHead == temp)

{

temp = temp->pBackward;

delete pHead;

pHead = temp;


}

else if (temp != 0 && pHead != temp)

{

A_temp->pBackward = temp->pBackward;

delete temp;

}

else

{

cout << "삭제하려는 인덱스의 위치에 데이터가 존재하지 않습니다.\n";

}

break;

}

}


void Linked_List::Insert()

{

int input = 0, data = 0;

Linked_List* temp = pHead;//삽입할 노드 생성

Linked_List* A_temp = 0;//삽입할 노드 생성


cout << "삽입하고 싶은 인덱스 위치값 입력 : ";

cin >> input;


if (pHead == 0)

cout << "저장된 데이터가 없습니다." << endl;

else

{

for (int i = 0; i < (input-1); i++)

{

temp = temp->pBackward;

}

if (temp == pHead)

{

A_temp = new Linked_List;

cout << "저장할 정수 데이터 값 입력 : ";

cin >> data;

A_temp->Data = data;

A_temp->pBackward = temp;

pHead = A_temp;

}

else

{

A_temp = new Linked_List;

cout << "저장할 정수 데이터 값 입력 : ";

cin >> data;

A_temp->Data = data;

A_temp->pBackward = temp->pBackward;

temp->pBackward = A_temp;

}

}

}

'[C], [ C++]' 카테고리의 다른 글

함수 포인터 및 함수  (0) 2015.05.28
연산자 오버로딩  (0) 2015.05.28
링크드 리스트(Queue)  (0) 2015.05.28
링크드 리스트 클래스 - Linked_List  (0) 2015.05.28
링크드 리스트 예제  (0) 2015.05.28

#include "Linked_List.h"



Linked_List::Linked_List()

{

pHead = 0;

}



Linked_List::~Linked_List()

{

}


void Linked_List::Add()

{

int input = 0;


cout << "데이터 입력(정수만 가능) : ";

cin >> input;


if (pHead == 0)//노드 처음 생성 및 데이터 입력

{

pHead = new Linked_List;//pHead에 메모리 할당.

pHead->Data = input;//pHead 노드의 데이터 저장 변수에 입력된 데이터를 저장.

pHead->pBackward = 0;//다음 노드의 주소값을 저장할 포인트 변수를 NULL로 초기화.

}

else//이후 노드의 추가 생성 및 데이터 입력.

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

while (temp->pBackward)//복사된 temp가 가진 pNext에 담긴 다음 노드의 주소값이 NULL인지 아닌지 확인.

{//NULL이 아니면 아래의 것을 실행.

temp = temp->pBackward;//temp노드가 가진 다음 노드의 주소값을 temp에 복사.

}

temp->pBackward = new Linked_List;//temp노드가 가진 다음 노드의 포인트 변수에 새로운 노드 생성 및 연결.

temp = temp->pBackward;//temp노드가 가진 다음 노드의 주소값을 temp에 복사.

temp->Data = input;//노드에 입력된 데이터를 저장.

temp->pBackward = 0;//다음 노드의 주소값을 저장할 포인트 변수를 NULL로 초기화.

}

}


void Linked_List::Display()

{

//저장된 데이터를 확인

if (pHead == 0)

{

cout << "데이터가 없습니다." << endl;

}

else//저장된 데이터 출력

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

cout << "입력된 데이터" << endl;

cout << temp->Data << endl;//저장된 데이터를 출력

while (temp->pBackward)//복사된 temp가 가진 pNext에 담긴 다음 노드의 주소값이 NULL인지 아닌지 확인.

{//NULL이 아니면 아래의 것을 실행.

temp = temp->pBackward;//temp에 temp->pNext가 가리키는 다음 노드의 주소를 연결!

cout << temp->Data << endl;

}

cout << "데이터 출력 완료" << endl;

}

}


void Linked_List::All_Delete()

{

//저장된 데이터를 확인

if (pHead == 0)

{

cout << "데이터가 없습니다." << endl;

}

else

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

while (pHead)//노드의 끝까지 반복. NULL이면 그만!

{

temp = temp->pBackward;//temp에다가 temp->pNext에 담긴 다음 노드의 주소를 연결.

delete pHead;//앞 노드를 삭제.

pHead = temp;//temp노드를 pHead에 복사.

}

//pHead = 0;

cout << "모든 데이터를 삭제하였습니다." << endl;

}

}


void Linked_List::Queue()

{

int i = 1;

//저장된 데이터를 확인

if (pHead == 0)

{

cout << "데이터가 없습니다." << endl;

}

else

{

Linked_List* temp = pHead;//pHead를 temp에 복사.

while (pHead)//노드의 끝까지 반복. NULL이면 그만!

{

cout << i << "번째 데이터 : " << temp->Data;

temp = temp->pBackward;//temp에다가 temp->pNext에 담긴 다음 노드의 주소를 연결.

delete pHead;//앞 노드를 삭제.

pHead = temp;//temp노드를 pHead에 복사.

cout << " 삭제\n";

i++;

}

//pHead = 0;

cout << "모든 데이터를 삭제하였습니다." << endl;

}

}


void Linked_List::Serch()

{

int d = 0, select = 0;

Linked_List* temp = pHead;


cout << "검색 방식 선택\n";

cout << "데이터 값(1), 인덱스 값(2)\n";

cout << "입력 : ";

cin >> select;


switch (select)

{

case 1 :

cout << "찾으시려는 데이터의 값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


while (temp)

{

if (temp->Data == d)

{

cout << "찾으시는 데이터를 확인하였습니다.\n";

}

else if (temp->Data == 0)

{

cout << "찾으시는 데이터가 존재하지 않습니다..\n";

}

else

{

temp = temp->pBackward;

}

}

break;

case 2 :

cout << "찾으시려는 데이터의 인덱스값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


Linked_List* temp = pHead;

for (int i = 0; i < d; i++)

{

temp = temp->pBackward;

}

if (temp != 0)

{

cout << "찾으시는 인덱스의 데이터 값 : " << temp->Data << endl;

}

else

{

cout << "찾으시는 인덱스의 위치에 데이터가 존재하지 않습니다.\n";

}

break;

}

}


void Linked_List::Delete()

{

int d = 0, select = 0;

Linked_List* A_temp = 0;

Linked_List* temp = pHead;


cout << "삭제 방식 선택\n";

cout << "데이터 값(1), 인덱스 값(2)\n";

cout << "입력 : ";

cin >> select;


switch (select)

{

case 1:

cout << "삭제 하시려는 데이터의 값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


while (temp)

{

if (pHead->Data != d && temp->Data == d)

{

A_temp->pBackward = temp->pBackward;

delete temp;

}

else if (pHead->Data == d)

{

temp = temp->pBackward;

delete pHead;

pHead = temp;

}

else

{

A_temp = temp;

temp = temp->pBackward;

}

}

break;

case 2:

cout << "삭제 하시려는 데이터의 인덱스값을 입력해 주세요." << endl;

cout << "입력 : ";

cin >> d;


for (int i = 0; i < d; i++)

{

A_temp = temp;

temp = temp->pBackward;

}

if (temp != 0 && pHead == temp)

{

temp = temp->pBackward;

delete pHead;

pHead = temp;


}

else if (temp != 0 && pHead != temp)

{

A_temp->pBackward = temp->pBackward;

delete temp;

}

else

{

cout << "삭제하려는 인덱스의 위치에 데이터가 존재하지 않습니다.\n";

}

break;

}

}


void Linked_List::Insert()

{

int input = 0, data = 0;

Linked_List* temp = pHead;//삽입할 노드 생성

Linked_List* A_temp = 0;//삽입할 노드 생성


cout << "삽입하고 싶은 인덱스 위치값 입력 : ";

cin >> input;


if (pHead == 0)

cout << "저장된 데이터가 없습니다." << endl;

else

{

for (int i = 0; i < (input-1); i++)

{

temp = temp->pBackward;

}

if (temp == pHead)

{

A_temp = new Linked_List;

cout << "저장할 정수 데이터 값 입력 : ";

cin >> data;

A_temp->Data = data;

A_temp->pBackward = temp;

pHead = A_temp;

}

else

{

A_temp = new Linked_List;

cout << "저장할 정수 데이터 값 입력 : ";

cin >> data;

A_temp->Data = data;

A_temp->pBackward = temp->pBackward;

temp->pBackward = A_temp;

}

}

}

'[C], [ C++]' 카테고리의 다른 글

연산자 오버로딩  (0) 2015.05.28
링크드 리스트(Stack)  (0) 2015.05.28
링크드 리스트 클래스 - Linked_List  (0) 2015.05.28
링크드 리스트 예제  (0) 2015.05.28
선택 정렬 - Selection Sort  (0) 2015.05.28

+ Recent posts