June is Combung
스택과 연결리스트 본문
#include <stdio.h>
#include <stdlib.h> // malloc(), free()
#include <Windows.h> // system()
typedef struct node {
int data;
struct node* next;
} NODE;
NODE* top = NULL; // 가장 마지막에 추가된 구조체(의 주소)를 가리킬 변수
NODE* init(int data){
NODE* tmp = (NODE*)malloc(sizeof(NODE));
tmp->data = data;
tmp->next = NULL;
return tmp;
}
void print_all(){
NODE* tmp = top;
while(tmp){
printf("%d ", tmp->data);
tmp = tmp->next;
}
printf("\n");
}
void push(int data){
NODE* new_node = init(data);
if(top){
new_node->next = top;
}
top = new_node;
}
void pop(){
if(!top){ // top == NULL
printf("Stack Underflow! \n");
return;
}
NODE* tmp = top;
top = top->next;
free(tmp);
}
void peek(){
printf("%d 가 처리될 차례~ \n", top->data);
}
void main(){
int data;
int select;
while(1){
print_all();
printf("1. push() \n");
printf("2. pop() \n");
printf("3. peek() \n");
printf("0. exit \n");
printf("입력 : ");
scanf_s("%d", &select);
switch(select){
case 1:
printf("추가할 정수 : "); scanf_s("%d", &data);
push(data);
break;
case 2:
pop();
break;
case 3:
peek();
break;
case 0:
exit(0);
}
system("pause");
system("cls");
} // while
} // main()
'C 자료구조와 알고리즘' 카테고리의 다른 글
Queue 연결리스트 (0) | 2021.06.29 |
---|---|
연결리스트(중간 노드 삽입 삭제) 단일포인터 버전 (0) | 2021.06.29 |
스택과 시간복잡도 (0) | 2021.06.29 |
동적할당 (0) | 2021.06.29 |
구조체 (0) | 2021.06.29 |
Comments