본문/내용
/* 머리와 꼬리부분 초기화 */
init_node();
/* `q`,`Q`가 입력되기 전까지 계속 반복된다.*/
while(1){
printf(`입력(i)/리스트(l)/종료(q)? : `);
gets(buff);
switch(*buff){
case `i`:
case `I`:
insert_node();
break;
case `l`:
case `L`:
list_node();
break;
case `q`:
case `Q`:
break;
}
if(*buff==`q` || *buff==`Q`)
break;
}
return 0;
}
/*노드 초기화 함수.*/
void init_node(void)
{
/* 헤더와 꼬리부분 초기화*/
head=(node *)malloc(sizeof(node));
tail=(node *)malloc(sizeof(node));
/* 헤더의 다음주소를 꼬리노드를 칭하게 한다.
꼬리노드의 다음 주소를 헤더에 둔다. */
head->next=tail;
tail->next=head;
}
/*노드 추가.*/
void insert_node(void)
{
/* 삽입할 노드 선언*/
node *insnode;
/*임시 노드*/
node *ptr;
/* 생성된 노드를 메모리에 할당. */
insnode=(node *)malloc(sizeof(node));
/*노드에서 name필드에 값 대입*/
do{
printf(`Name: `);
gets(insnode->name);
/*입력이 안되면 다시 입력.*/
}while(!strlen(insnode->name));
/*ptr노드에 헤드노드 주소값 부여*/
ptr=head;
while(ptr->next != tail){
ptr = ptr->next;
}
insnode->next = tail;
ptr->next = insnode;
}
/*노드의 전체를 출력합니다.*/