/*
* http://sosal.tistory.com/
* made by so_Sal
*/
#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
int main(){
node a(1);
cout<<a.getValue()<<endl;
return 0;
}
class 형태로 node(마디)를 하나 만들었습니다.
생성자 함수로 value의 값을 지정하며,
getValue() 함수로 value값을 리턴하는 클레스를 만들었습니다.
node *next; 는 바로 다음 노드(다음번째 배열 쯤으로 생각하면 쉽겠네요)
를 가리킬 포인터입니다. 클레스는 새로운 자료형을 생성하는것으로,
node라는 자료형을 가리키는 포인터가 되겠습니다.
일단 위에서 간단한 노드를 생성하여 value를 출력해보았는데요,
이제, 링크 형식으로 생성하는 함수를 만들어볼까요?
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;
}
풀소스.
LINK_
'Programing > C- programing' 카테고리의 다른 글
링크드 리스트의 추가,출력,삭제,찾기,바꾸기 소스 (0) | 2010.08.19 |
---|---|
링크드리스트 노드 추가, 연결 (0) | 2010.08.19 |
C programming :: Void형 포인터와 NULL 포인터 (3) | 2010.01.27 |
C++. template 템플릿. 자유로운 자료형 만들기 (3) | 2009.11.01 |
C++ 학생정보 링크드리스트 코드 소스 (0) | 2009.10.15 |