Algorithm

[C언어] 연결리스트 스택 Linked Stack

say! 2023. 1. 12. 14:51
728x90

연결리스트 장점 > 크기 제한X

 

🟡 연결리스트로 구현한 스택 코드

#include <stdio.h>
#include <stdlib.h>

typedef int element;
typedef struct {
	element data;
	struct StackNode* link;
}StackNode;

typedef struct {
	StackNode* top;
} LinkedStackType;

void init(LinkedStackType* s) {
	s->top = NULL;
}

int is_full(LinkedStackType* s) {
	return 0;
}

int is_empty(LinkedStackType* s) {
	return (s->top == NULL);
}

void push(LinkedStackType* s, element item) {
	StackNode* temp = (StackNode*)malloc(sizeof(StackNode));
	temp->data = item;
	temp->link = s->top;
	s->top = temp;
}

element pop(LinkedStackType* s) {
	if (is_empty(s)) {
		printf("스택이 비었습니다.\n");
		return;
	}
	else{
		StackNode* temp = s->top;
		element data = temp->data;
		s->top = temp->link;
		free(temp);
		return data;
	}
}

element peek(LinkedStackType* s) {
	if (is_empty(s)) {
		printf("스택이 비었습니다.\n");
		return;
	}
	else {
		return s->top->data;
	}
}

int main() {
	LinkedStackType s;
	init(&s);
	push(&s, 1);
	push(&s, 3);
	push(&s, 6);
	printf("%d\n", pop(&s));
	printf("%d\n", pop(&s));
	return 0;
}

'Algorithm' 카테고리의 다른 글

[C언어] 원형 연결리스트  (0) 2023.01.12
[C언어] 연결리스트 큐 Linked Queue  (0) 2023.01.12
[C언어] - 원형 덱 double-ended queue  (0) 2023.01.12
[C언어] - 원형 큐 Circular Queue  (0) 2023.01.11
[C언어] - 큐 Queue  (0) 2023.01.11