반응형
/*
* 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
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;
}
* 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
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;
}
'Programing > C- programing' 카테고리의 다른 글
링크드리스트 :: 추가된 리스트 원하는 위치에서 삭제, 찾기, 바꾸기 (0) | 2010.08.19 |
---|---|
링크드 리스트의 추가,출력,삭제,찾기,바꾸기 소스 (0) | 2010.08.19 |
링크드리스트 :: 간단한 기본 형태 (단방향) (0) | 2010.08.19 |
C programming :: Void형 포인터와 NULL 포인터 (3) | 2010.01.27 |
C++. template 템플릿. 자유로운 자료형 만들기 (3) | 2009.11.01 |