1. 스택의 구현 例) (C 언어의 배열,구조체을 사용하는 경우)
ㅇ 스택을 표현하는 배열과 이 배열의 정보를 담은 구조체로써 표현
- (스택 표현 구조체 선언 例) typedef struct {int max; int top; int *stk; } Stack;
. (max : 용량/최대크기, top : 스택 인덱스, *skt : 스택의 첫 요소에 대한 포인터)
- (스택 필요 동작/연산 例)
. (스택 초기화) int initialize(Stack *s, int max);
. (집어넣기) int push(Stack *s, int x);
. (빼냄) int pop(Stack *s, int *x);
. (크기) int size(const Stack *s);
ㅇ 구현 例)
// 스택 생성
#define MAX 100; // 스택 배열의 최대 크기
int stack[MAX]; // 스택을 배열로 선언
int top = 0; // 스택 인덱스를 선언과 동시에 0으로 초기화
// 스택 초기화
void init() {
int top = 0; // 스택 인덱스를 처음 위치로
}
// 스택 추가(입력)
void push(int *stack, int *top, int x) {
if(top >= MAX-1) { // 스택이 이미 차있는 경우
printf("Stack is full\n"););
return;
}
top = top + 1; // top 인덱스 증가
stack[top] = x;
}
// 스택 삭제(출력)
void push(int *stack, int *top) {
if(top == -1) { // 스택이 비어있는 경우
printf("Stack is empty\n");
return;
}
--top; // top 인덱스 감소
return stack[top];
}
// 스택이 비어있는지 여부
void isEmpty() {
}
// 스택이 가득찼는지 여부
void isFull() {
}
2. 리스트의 구현 例) (C 언어)
ㅇ (고정 크기) => 배열에 의해 선형 리스트로써 구현
ㅇ (가변 크기) => 포인터를 이용한 연결 리스트로써 구현
ㅇ ... (작성중) ...