본문 바로가기

프로그래밍 언어들

C언어 2중 포인터를 이용한 스택(stack) #include #include typedef struct node{int data;struct node *prv;}NODE; NODE* createnode( int); // create a node in Hip realmvoid delNode( NODE **); // delete a node positioned on top of stackvoid addNode( NODE **, int); // add a node on top of stackvoid insertNode( NODE **, int, int); // insert a node between two nodes int main( void){NODE *top = NULL; addNode( &top, 10);addNode( &top, 20);addNo.. 더보기
이중 포인터를 이용한 tree(트리) 구조 #include #include #defineFAIL0#defineSUCC1 typedef struct node{struct node *left;struct node *right;int data;}NODE; NODE* createNode( int);void insertNode( NODE **, int);int deleteNode( NODE **, int); int main( void){int arry[]= {50, 70, 30, 90, 60, 20, 110, 80, 65, 55, 68, 63, 58, 53};int c= 0;NODE *root= NULL; for( c = 0 ; c < sizeof(arry) / 4 ; c ++){insertNode( &root, arry[c]);} deleteNode( .. 더보기
이중 포인터를 이용한 큐(queue) #include #include #define _MSGONCALL_#define _PRINTNODE_ typedef struct node{int data;struct node* next;}NODE; void insertNode( NODE **, NODE **, int);void deleteNode( NODE **);void printNode( NODE *);NODE* createNode( int); int main( void){NODE *front = NULL;NODE *rear= NULL; insertNode( &front, &rear, 10);insertNode( &front, &rear, 20);insertNode( &front, &rear, 30); deleteNode( &front);delete.. 더보기
입력한 수의 회문 구하기 회문이란 뒤집어도 같은 수를 의미한다. ex) 121 , 545 ... int reverse_number( int); int main( void){int number= 0;scanf( "%d", &number); while( number != ( rvs_num = reverse_number( number))){printf( "%d + %d = %d\n", number, rvs_num, number + rvs_num); number += rvs_num;} return 0;} int reverse_number( int n){int num = 0; for(; n > 0 ; n /= 10){num *= 10; num += n % 10;} return num;} 더보기
파스칼 삼각형 출력하기 #define MAX 100 int main(void) {int arry[MAX][MAX] = {0, };int count = 1;int r = 0;scanf( "%d", &number); for( c = 0 ; c < number ; c ++){for( r = 0 ; r 더보기
재귀함수(recursive function)을 이용한 순차적 수 출력 void rec_func( int); int main( void){int number= 0;scanf( "%d", &number); rec_func( number); } void rec_func( int n){if( n == 0) return;rec_func( n-1);printf( "%3d", n);} 더보기
입력한 수가 소수(prime number)인지 판단하는 프로그램 int check_prime( int); int main( void){int number= 0;scanf( "%d", &number); if( check_prime( number)){printf( "That's prime number\n");}else{printf( "NOT prime number\n");}} int check_prime( int n){int c = 0; for( c = 2 ; c 더보기
조건문(switch~case)만 이용한 점수에 따른 학점 출력 Switch~case만을 사용해서 0~100 점 사이의 점수를 입력받아 해당하는 점수의 학점을 출력하는 프로그램이다. 그 외의 점수 입력시 에러 출력 int main( void){int number= 0;int c= 0;int sum= 0;intrvs_num= 0; scanf( "%d", &number); switch( number 0){case 0: printf("error!\n"); break;default :switch( number / 10){case 10:case 9: printf("A\n"); break;case 8: printf("B\n"); break;case 7: printf("C\n"); break;case 6: printf("D\n"); break;default : printf("F\.. 더보기
임의의 난수를 생성하는 동시에 배열에 정렬 #include #include #define MAX10 int main( void){int arry[ MAX] = {0, };int cnt = 0, fn = 0;int key = 0, temp = 0; srand( ( unsigned)time( 0)); printf("program start\n");printf("before sorting > "); for( cnt = 0 ; cnt = 0 ; fn --){if( arry[ fn] > arry[ cnt]){key = fn;}} temp = arry[ cnt]; for( .. 더보기
두 개의 쓰레드를 활용한 병합정렬(merge sorting) #include #include #include #include #include #include #define CHECK_END -1 static int *array = NULL;static pthread_t tid[2]; static void div_array(int *, int, int, unsigned int);static void merge_sort(int *, unsigned int); void *left_sort(void *size){int s = *((int *)size);int middle = s/2; div_array(array, 0, middle, (unsigned int)tid[0]);} void *right_sort(void *size){int s = *((int *)size);in.. 더보기