일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- v4
- 울산박물관
- 한국대중음악박물관
- axe
- 피쉬아일랜드
- AT&T
- 버그
- 브이포
- 주식
- 걷기앱
- VDI
- 달빛조각사
- 몬스터스트라이크
- AIA Vitality
- 족저근막염
- 국립경주박물관
- 후쿠오카
- 샤오미
- 치루
- 창세기전
- 스피릿위시
- 창세기전 모바일
- 쿠폰
- 리니지2레볼루션
- 도미네이션즈
- 워리어
- 후기
- 2차전직
- 아가시온
- 반구대암각화
- Today
- Total
일상다반사 로그
C연결리스트 - 큐 본문
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define IS_FULL(ptr) (!(ptr))
#define IS_EMPTY(ptr) (!(ptr))
typedef struct {int key;/* 기타 필드 */}element;
typedef struct queue *queue_pointer;
typedef struct queue {
element item;
queue_pointer link;
}queue;
queue_pointer front=NULL, rear;
void addq(queue_pointer *front, queue_pointer *rear, element item);
element deleteq(queue_pointer *front);
void print_list(queue_pointer front);
void main(){
int a; // 메뉴입력변수
element item;
while(1){
printf("***********************************\n");
printf("******* 메 뉴 ******\n");
printf("***********************************\n");
printf(" 1.삽입\n");
printf(" 2.삭제\n");
printf(" 3.출력\n");
printf(" 4.종료\n");
printf(" 선택:");scanf("%d",&a);
if(a==1){ //삽입
printf("DATA INPUT :");
scanf("%d",&item);
addq(&front,&rear,item);
}else if(a==2){ //삭제
printf("DATA DELETE \n");
deleteq(&front);
}else if(a==3){ //출력
printf("DATA DISPLAY \n");
print_list(front);
}else if(a>=4){
printf("프로그램이 종료되었습니다.\n");
exit(-1);
}
}//while
}
void addq(queue_pointer *front, queue_pointer *rear, element item) {
/* 큐의 rear에 원소를 삽입
큐가 공백이면 front를 변경시켜 새로운
노드를 가리키도록한다.
그렇지않으면 rear의 링크필드를 변경시켜 새로운노드를 가리킨다.*/
queue_pointer temp = (queue_pointer) malloc(sizeof (queue)); //새로운 노드 생성
if (IS_FULL(temp)) {
fprintf(stderr,"The memory is full");
exit(1);
}
temp->item = item;
temp->link = NULL;
if (*front) //큐가 공백이 아닐때
(*rear)->link = temp;
else
*front = temp; //공백큐인 경우
*rear = temp;
}
element deleteq(queue_pointer *front){
/* 큐에서 원소를 삭제 */
queue_pointer temp = *front;
element item;
if (IS_EMPTY(*front)) {
fprintf(stderr,"The queue is empty");
exit(1);
}
printf("DELETE VALUE : %d \n",*temp); //DATA가 삭제되는 값을 출력
item = temp->item;
*front = temp->link;
free(temp);
return item;
}
/*데이터 출력*/
void print_list(queue_pointer front){
printf("The list contains: ");
for( ; front; front=front->link)
printf("%4d",front->item);
printf("\n");
}
이 포스트는 네이버블로그에서 티스토리로 이전하였습니다.
'IT > C,C#' 카테고리의 다른 글
로봇C 미로찾기 (0) | 2017.11.14 |
---|---|
로봇 C 터치 센서 (0) | 2017.11.13 |
C언어 마름모 (0) | 2017.10.23 |
C 최대히프 삽입 (0) | 2017.10.20 |
C 연결리스트 - 스택 (0) | 2017.10.18 |