C++ 2011.10.02 (미검사)
#include<iostream.h>
struct node // 자기참조 구조체
{
int data;
struct node *link;
};
node *L = NULL; // 리스트포인터 (리스트명)
void InsertFirst(int x) // x를 리스트의 첫번째 노드로 삽입해주는 함수
{
node *t = new node;
t->data = x;
t->link = L;
L = t;
}
void DeleteFirst( ) // 리스트의 첫번째 노드를 삭제해 주는 함수
{
if(L==NULL)
{
cout << "노드가 없어서 삭제 불가!" << endl;
}
else
{
node *t = L;
L = L->link;
delete t;
}
}
void print( )
{
node *p = L;
cout << "L -> ";
while(p!=NULL)
{
cout << "[" << p->data << "]" ;
p = p->link;
}
cout << endl;
}
void main ( )
{
print( );
InsertFirst(10);
print( );
InsertFirst(20);
print( );
InsertFirst(30);
print( );
DeleteFirst( );
print( );
DeleteFirst( );
print( );
DeleteFirst( );
print( );
}
/*
struct node // 자기참조 구조체
{
int data;
struct node *link;
};
node *L = NULL; // 리스트포인터 (리스트명)
void InsertFirst(int x) // x를 리스트의 첫번째 노드로 삽입해주는 함수
{
node *t = new node;
t->data = x;
t->link = L;
L = t;
}
void DeleteFirst( ) // 리스트의 첫번째 노드를 삭제해 주는 함수
{
node *t = L;
L = L->link;
delete t;
}
void main ( )
{
InsertFirst(10);
InsertFirst(20);
InsertFirst(30);
DeleteFirst( );
DeleteFirst( );
DeleteFirst( );
}
*/
/*
struct node // 자기참조 구조체
{
int data;
struct node *link;
};
node *L = NULL; // 리스트포인터 (리스트명)
void InsertFirst(int x) // x를 리스트의 첫번째 노드로 삽입해주는 함수
{
node *t = new node;
t->data = x;
t->link = L;
L = t;
}
void main ( )
{
InsertFirst(10);
InsertFirst(20);
InsertFirst(30);
}
*/
/*
int f1(int n) // 반복문을 이용해 피보나치 수열의 n번 항을 구하는 함수
{
if(n==1 || n==2)
return 1;
int a=1, b=1, c, i;
for(i=3; i<=n; i++)
{
c = a + b;
a = b;
b = c;
}
return c;
}
int f2(int n) // 재귀호출을 이용해 피보나치 수열의 n번항을 구하는 함수
{
if(n==1 || n==2)
return 1;
else
return f2(n-2) + f2(n-1);
}
void main ( )
{
cout << "피보나치 수열의 5번 항 : " << f1(30) << endl;
cout << "피보나치 수열의 7번 항 : " << f1(35) << endl;
cout << "피보나치 수열의 5번 항 : " << f2(40) << endl;
cout << "피보나치 수열의 7번 항 : " << f2(45) << endl;
}
*/
/*
int f1(int n) // 반복문을 이용해 피보나치 수열의 n번 항을 구하는 함수
{
if(n==1 || n==2)
return 1;
int a=1, b=1, c, i;
for(i=3; i<=n; i++)
{
c = a + b;
a = b;
b = c;
}
return c;
}
int f2(int n) // 재귀호출을 이용해 피보나치 수열의 n번항을 구하는 함수
{
if(n==1 || n==2)
return 1;
else
return f2(n-2) + f2(n-1);
}
void main ( )
{
cout << "피보나치 수열의 5번 항 : " << f1(5) << endl;
cout << "피보나치 수열의 7번 항 : " << f1(7) << endl;
cout << "피보나치 수열의 5번 항 : " << f2(5) << endl;
cout << "피보나치 수열의 7번 항 : " << f2(7) << endl;
}
*/
/*
int f1(int n) // 반복문을 이용해 피보나치 수열의 n번 항을 구하는 함수
{
if(n==1 || n==2)
return 1;
int a=1, b=1, c, i;
for(i=3; i<=n; i++)
{
c = a + b;
a = b;
b = c;
}
return c;
}
void main ( )
{
cout << "피보나치 수열의 5번 항 : " << f1(5) << endl;
cout << "피보나치 수열의 7번 항 : " << f1(7) << endl;
}
*/
/*
template <class tt>
class stack
{
tt data[5];
int top;
public :
stack( ) { top = -1; }
void push( tt x )
{
top++;
data[top] = x;
}
tt pop( )
{
return data[top--];
}
};
void main ( )
{
stack<int> ob;
ob.push(10);
ob.push(20);
ob.push(30);
cout << ob.pop( ) << endl;
cout << ob.pop( ) << endl;
cout << ob.pop( ) << endl;
stack<double> pb;
pb.push(1.5);
pb.push(2.5);
pb.push(3.5);
cout << pb.pop( ) << endl; // 3.5
cout << pb.pop( ) << endl; // 2.5
cout << pb.pop( ) << endl; // 1.5
}
*/
/*
class stack
{
double data[5];
int top;
public :
stack( ) { top = -1; }
void push( double x )
{
top++;
data[top] = x;
}
double pop( )
{
return data[top--];
}
};
void main ( )
{
stack ob;
ob.push(10.525);
ob.push(20.5844);
ob.push(30.5123);
cout << ob.pop( ) << endl;
cout << ob.pop( ) << endl;
cout << ob.pop( ) << endl;
}
*/
/*
class stack
{
int data[5];
int top;
public :
stack( ) { top = -1; }
void push( int x )
{
top++;
data[top] = x;
}
int pop( )
{
return data[top--];
}
};
void main ( )
{
stack ob;
ob.push(10);
ob.push(20);
ob.push(30);
cout << ob.pop( ) << endl;
cout << ob.pop( ) << endl;
cout << ob.pop( ) << endl;
}
*/
/*
template <class kk>
class final
{
kk a;
kk b;
public :
void set ( kk x, kk y );
void print( ) { cout << "a = " << a << " , b = " << b << endl; }
};
template<class kk> // template class의 멤버함수를 class 외부에 정의하는 방법
void final<kk>::set( kk x, kk y )
{
a = x;
b = y;
}
void main ( )
{
final<int> ob; // template class를 객체 생성시 template 파라미터를 반드시 명시해야 한다.
ob.set( 10, 20 );
ob.print( );
final<double> pb;
pb.set( 1.5, 2.5 );
pb.print( );
}
*/
/*
template <class kk>
class final
{
kk a;
kk b;
public :
void set ( kk x, kk y )
{
a = x;
b = y;
}
void print( ) { cout << "a = " << a << " , b = " << b << endl; }
};
void main ( )
{
final<int> ob; // template class를 객체 생성시 template 파라미터를 반드시 명시해야 한다.
ob.set( 10, 20 );
ob.print( );
final<double> pb;
pb.set( 1.5, 2.5 );
pb.print( );
}
*/
/*
class final
{
int a;
int b;
public :
void set ( int x, int y )
{
a = x;
b = y;
}
void print( ) { cout << "a = " << a << ", b = " << b << endl; }
};
void main ( )
{
final ob;
ob.set( 10, 20 );
ob.print( );
}
*/