#include<iostream>
using namespace std;
class node{
private:
int value;
public:
node(int a){ // 생성자 함수를 이용하여 value 초기화
value = a;
}
int getValue(){ // 값을 얻어오기 위한 함수
return value;
}
node *next; // 다음 노드를 가리킬 포인터
};
node* first; // 첫번째 노드
node* newNode;
int count; // 노드의 숫자를 관리할 conter
node* CreateNode(int val){
node *myNode = new node(val); // 새로운 노드 new 를 이용하여 생성 및 value 초기화
myNode->next=NULL; // next 노드 포인터에 NULL값 삽입.
count++;
return myNode; // 새로 만들어진 노드를 리턴
}
void AppendNode(node** first, node* newNode){
if( (*first) == NULL)
*first = newNode; // 첫번째 노드가 비어있을땐, 바로 first에 삽입!
else{
node *last = *first;
while(last->next != NULL){ // 노드 마지막에 삽입하는것이므로.. 마지막까지 이동
last = last->next;
}
last->next = newNode; // 연결!
}
}
void PrintNode(){
node* print = first;
while(print != NULL){
if(print->next == NULL)
cout<<print->getValue()<<endl; // 마지막 노드는 숫자만
else
cout<<print->getValue()<<" -> "; // 마지막 노드가 아니면 화살표 ㅎㅎ
print = print->next;
}
return;
}
int menu(){
int num;
cout<<"[1] 추가\t[2] 출력\t[3]종료"<<endl;
cin>>num;
return num;
}
int main(){
int a=1;
int val;
while(1){ // 무한루프 돌리면서 메뉴와 인풋을 받아서~
a = menu();
if(a==1){
cout<<"input : ";
cin>>val;
newNode = CreateNode(val); //노드 추가!
AppendNode(&first,newNode);
}
else if(a==2)
PrintNode(); // 노드 출력~
else if(a==3)
break;
}
return 0;
}
'Computer Languages > C | C++' 카테고리의 다른 글
[펌] new와 delete (0) | 2010.10.11 |
---|---|
포인터 개념 (0) | 2010.10.11 |
3x3 행렬의 곱 (0) | 2010.10.08 |
cast연산자 (0) | 2010.10.04 |
Hello world (0) | 2010.09.19 |