#include <stdio.h>
#include <malloc.h>
#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);
deleteNode( &front);
deleteNode( &front);
insertNode( &front, &rear, 50);
insertNode( &front, &rear, 90);
deleteNode( &front);
deleteNode( &front);
deleteNode( &front);
deleteNode( &front);
insertNode( &front, &rear, 40);
insertNode( &front, &rear, 130);
return 0;
}
NODE* createNode( int data)
{
NODE *temp = (NODE*)malloc(sizeof(NODE));
#ifdef _MSGONCALL_
printf("## createNode entered ##\n");
#endif
(*temp).next = NULL;
(*temp).data = data;
#ifdef _MSGONCALL_
printf("## createNode left ##\n");
#endif
return temp;
}
void insertNode( NODE **f, NODE **r, int data)
{
NODE *temp = createNode( data);
#ifdef _MSGONCALL_
printf("## insertNode entered ##\n");
#endif
if( *f == NULL)
{
*r = *f = temp;
}
else
{
(**r).next = temp;
*r = temp;
}
#ifdef _MSGONCALL_
printf("## insertNode left ##\n");
#endif
#ifdef _PRINTNODE_
printNode( *f);
#endif
}
void deleteNode( NODE **f)
{
NODE *temp = *f;
#ifdef _MSGONCALL_
printf("## deleteNode entered ##\n");
#endif
if( *f == NULL)
{
printf("Queue is emtpy!\n");
return;
}
*f = (**f).next;
free(temp);
#ifdef _MSGONCALL_
printf("## deleteNode left ##\n");
#endif
}
void printNode( NODE *f)
{
if( f)
{
printf("%d ->", (*f).data);
printNode( (*f).next);
}
else
{
printf("END\n");
}
}
'프로그래밍 언어들 > C' 카테고리의 다른 글
C언어 2중 포인터를 이용한 스택(stack) (0) | 2015.12.08 |
---|---|
이중 포인터를 이용한 tree(트리) 구조 (0) | 2015.09.15 |
입력한 수의 회문 구하기 (0) | 2015.03.30 |
파스칼 삼각형 출력하기 (0) | 2015.03.30 |
재귀함수(recursive function)을 이용한 순차적 수 출력 (0) | 2015.03.30 |