-스택 리스트
#include<stdio.h> | |
#include<stdlib.h> | |
#include<conio.h> | |
typedef struct list { | |
int data; | |
struct list *link; | |
}Node, *pNode; | |
//구조체 동적할당 | |
Node *talloc(void); | |
//PUSH | |
Node* push(Node *head); | |
//POP | |
Node* pop(Node *head); | |
//프린트 | |
void link_print(Node *head); | |
//리스트 갯수 | |
int link_number(Node *head); | |
void main() { | |
Node *head; | |
head = NULL; | |
while(true) { | |
printf("------------------------------------\n1. push \n2. pop \n3. print \n4.End\n------------------------------------"); | |
switch(getch()) { | |
case '1'://PUSH | |
if (link_number(head) < 10) { | |
printf("\n입력 : "); | |
head = push(head); | |
} | |
else { | |
printf("\n WARNING : 오버플로우\n"); | |
} | |
break; | |
case '2'://POP | |
if (head != NULL) { | |
printf("\n출력\n"); | |
head = pop(head); | |
} | |
else { | |
printf("\n WARNING : 로우플로우\n"); | |
} | |
break; | |
case '3'://All Print | |
printf("\n프린트\n"); | |
link_print(head); | |
break; | |
case '4'://End | |
return;//종료 | |
break; | |
} | |
} | |
} | |
//구조체 동적할당 | |
Node *talloc(void) { | |
return (Node *)malloc(sizeof(Node)); | |
} | |
//PUSH | |
Node* push(Node *head) { | |
Node *p=talloc(); | |
scanf("%d", &p->data); | |
p->link=head; | |
return p; | |
} | |
//POP | |
Node* pop(Node *head) { | |
printf("%d\n", head->data); | |
return head->link; | |
} | |
//프린트 | |
void link_print(Node *head) { | |
Node* p = head; | |
while(p!=NULL) { | |
printf("%d\n", p->data); | |
p=p->link; | |
} | |
free(p); | |
} | |
//리스트 갯수 | |
int link_number(Node *head) { | |
int cnt = 0; | |
Node* p = head; | |
while(p!=NULL) { | |
p=p->link; | |
cnt++; | |
} | |
free(p); | |
return cnt; | |
} | |
-결과
'C언어 > 예제 및 소스' 카테고리의 다른 글
C언어 :: 2의 2000승 짜기 (0) | 2015.04.15 |
---|---|
C언어 :: malloc 함수를 이용한 동적할당 예제 (2) | 2015.04.13 |
C언어 :: 큐 구현 소스 ! (0) | 2015.04.12 |
C언어 :: 스택 구현 소스 및 보고서 (1) | 2015.04.12 |
C언어 :: 달팽이 배열 소스 ! (1) | 2015.04.12 |
WRITTEN BY