매니저/C++

C++ 2011.10.02 (미검사)

cdprkr2077 2011. 10. 13. 00:12

#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( );
}
*/