순차 자료구조인 1차원 배열을 이용해 스택을 구현할 수 있다. 1차원 배열인 stack[n]을 사용할 때 n은 배열 크기로, 배열 원소의 개수를 나타내므로 n은 스택 크기가 된다. 스택에 원소가 쌓이는 순서는 배열의 인덱스로 표현한다. 따라서 스택의 첫 번째 원소는 stack[0]에 저장하고, 스택의 두 번쨰 원소는 stack[1]에 저장하며, 스택의 n번째 원소는 stack[n-1]에 저장한다.

스택의 top을 표현하기 위해 배열 stack의 마지막 원소의 인덱스르 변수 top에 저장한다. 변수 top에 0부터 (n-1)까지 인덱스를 저장하게 되므로 스택의 초기 상태(공백 스택)에서는 -1을 저장한다.

크기가 5인 스택을 생성하여 원소 A, B, C를 순서대로 삽입한 후에 원소 하나를 삭제하는 과정을 살펴보자.

[ 예제 5-1 ] 은 순차 자료구조를 이용하여 스택의 추상 자료형과 알고리즘을 구체화하여 구현한 프로그램이다.

// 예제 5-1 순차 자료구조를 이용해 순차 스택 구현하기
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100

typedef int element;			// 스택 원소(element)의 자료형을 int로 정의

element stack[STACK_SIZE];	// 1차원 배열 스택 선언
int top = -1;

// 스택이 공백 상태인지 확인하는 연산
int isEmpty() {
	if (top == -1) return 1;
	else return 0;
}

// 스택이 포화 상태인지 확인하는 연산
int isFull() {
	if (top == STACK_SIZE - 1) return 1;
	else return 0;
}

// 스택의 top에 원소를 삽입하는 연산
void push(element item) {
	if (isFull()) {
		printf("\\n\\n Stack is FULL! \\n");
		return;
	}
	else stack[++top] = item;
}

// 스택의 top에서 원소를 삭제하는 연산
element pop() {
	if (isEmpty()) {
		printf("\\n\\n Stack is Empty!!\\n");
		return 0;
	}
	else return stack[top--];	// 현재 top의 원소를 삭제한 후 top 감소
}

// 스택의 top 원소를 검색하는 연산
element peek() {
	if (isEmpty()) {		// 스택이 공백 상태인 경우
		printf("\\n\\n Stack is Empty !\\n");
		exit(1);
	}
	else return stack[top];	// 현재 top의 원소 확인
}

void printStack() {
	int i;
	printf("\\n STACK [ ");
	for (i = 0; i < top; i++)
		printf("%d ", stack[i]);
	printf("] ");
}

void main(void) {
	element item;
	printf("\\n** 순차 스택 연산 **\\n");
	printStack();
	push(1);	printStack();
	push(2);	printStack();
	push(3);	printStack();

	item = peek(); printStack();
	printf("\\tpeek => %d", item);

	item = pop(); printStack();
	printf("\\tpop => %d", item);

	item = pop(); printStack();
	printf("\\tpop => %d", item);

	item = pop(); printStack();
	printf("\\tpop => %d", item);

	getchar();
}

28행 : 스택이 포화 상태가 아닌 경우에 삽입 연산을 수행한다. stack[++top]=item;은 ①++top;과 ②stack[top]=item;을 의미하므로 먼저 현재 top의 위치를 하나 증가시킨 후에 원소 item을 저장한다.

37행: 스택이 공백 상태가 아닌 경우에 삭제 연산을 수행한다. return stack[top—];은 ①return stack[top];과 ②top—;를 의미하므로, 삭제 대상인 현재 top의 원솔르 반환한 후에 top의 위치를 하나 감소시킨다.

46행 : 스택이 공백 상태가 아닌 경우에 검색 연산을 수행한다. 스택에 저장된 원소는 top의 위치에서만 액세스할 수 있으므로, 검색 연산을 통해 top의 원소를 확인한다.

53~54행: 1차원 배열로 구현한 스택에 저장된 원소를 출력하기 위해 배열 원소 stack[0]부터 stack[top] 까지 출력한다. stack[0]은 스택의 첫 번째 원소이고, stack[top]은 스택의 마지막 원소이다.