스택과 큐 자료구조

스택

코드 전문

/* DBLAB struct-linkedlist.c */
#include <stdio.h>
#include <malloc.h>
#define MAX_STACK_SIZE 100

char stack[MAX_STACK_SIZE];
int top = -1;
void push(char item) {
	if (top >= MAX_STACK_SIZE - 1) { printf("stack full()\\n"); return; }
	stack[++top] = item;
}
char pop() {
	if (top == -1) { printf("stack_empty()\\n"); exit(); }
	return stack[top--];
}
int isempty() { if (top <0) return(1); 
else return(0);
}
int isfull() { if (top >= MAX_STACK_SIZE - 1) return(1); 
else return(0);
}

int stack1[MAX_STACK_SIZE];
int top1 = -1;
void push1(int item) {
	if (top1 >= MAX_STACK_SIZE - 1) { printf("stack full()\\n"); return; }
	stack[++top1] = item;
}
int pop1() {
	if (top1 == -1) { printf("stack_empty()\\n"); exit(); }
	return stack1[top--];
}
int isempty1() {
	if (top1 == -1) return(1);
	else return(0);
}
int isfull1() {
	if (top >= MAX_STACK_SIZE - 1) return(1);
	else return(0);
}

int main() {
	int e;
	int j;

	for (int i = 0; i <5 ; ++i) {
		push("a" + i);
		push1( 1 + i);
	}

	while (!isempty()) {
		e = pop();
		j = pop();
		printf("야구선수 = %c, 선수 번호=%d \\n", e,j);
	}

}

/*
struct node {
	int data;
	struct node * link;
};
typedef struct node list_node;
typedef list_node * list_ptr;

int main()
{
	list_node item1, item2, item3;
	item1.data = 'a';
	item2.data = 'b';
	item3.data = 'c';
	item1.link = item2.link = item3.link = NULL;
	item1.link = &item2;
	item2.link = &item3;
	printf(" %c \\n", item1.link->link->data);
}

*/

java에서 스택을 구현하는 방법 : 객체 지향이 좀 더 편하다. 자료구조에서의 비교법을 찾아야 한다.

차이가 있느냐?

→ c는 펼쳐져 있으나 java는 class로 만들어준다.

java는 스택이라는 자료구조를 미리 만들어준다. → java.util.Stack 을 만들어놨음