스택을 활용한 인원관리 프로그램

2022. 8. 22. 21:49자료구조

728x90
#include <stdio.h>
#include <stdlib.h>
#define EMPTY 0

typedef struct node {
	int data;
	struct node* link;
}Stack;

Stack* GetNode()
{
	Stack* tmp;
	tmp = (Stack*)malloc(sizeof(Stack));
	tmp->link = EMPTY;
	return tmp;
}

void Push(Stack** top, int data)
{
	Stack* tmp;
	tmp = *top;
	*top = GetNode();
	(*top)->data = data;
	(*top)->link = tmp;
}

void Pop(Stack** top) {

	if (*top == EMPTY) {
		return;
	}
	printf("%d", (*top)->data);
	Stack* tmp;
	tmp = *top;
	(*top) = (*top)->link;
	free(tmp);
}

int main()
{
	Stack* top = EMPTY;

	Push(&top, 10);
	Push(&top, 20);
	Push(&top, 30);

	Pop(&top);
    Pop(&top);
    Pop(&top);
   
	return 0;
}

 

 

문자열을 복사하렴녀 strcpy 함수를 사용해야함!!

strcpy의 활용법!

->

<string.h> 헤더파일 추가

strcpy(문자열을 저장할 공간, 복사할 문자열);

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define EMPTY 0

typedef struct node {
	char name[20];
	int age;
	struct node* link;
}Stack;

Stack* GetNode() {
	Stack* tmp;
	tmp = (Stack*)malloc(sizeof(Stack));
	tmp->link = EMPTY;
	return tmp;
}

void Push(Stack** top, Stack data) {
	Stack* tmp;
	tmp = *top;
	*top = GetNode();
	strcpy((*top)->name, data.name);
	(*top)->age = data.age;
	(*top)->link = tmp;
}

void Pop(Stack** top) {
	if (*top == EMPTY) {
		printf("Stack is Empty!!\n");
		return;
	}
	Stack* tmp;
	tmp = *top;
	(*top) = (*top)->link;
	printf("삭제\n");
	free(tmp);
}

void Print(Stack** top) {
	
	Stack* tmp;
	tmp = *top;
	int cnt = 1;

	printf("번호\t이름\t나이\n");

	while (tmp) { // 0의 값은 false로 해석
		
		printf("%3d\t%s\t%3d\n",cnt++,tmp->name,tmp->age);
		tmp = tmp->link;
	}


	
	
}

int main()
{
	Stack* top = EMPTY;
	int sel = 0;
	Stack data;

	while (sel != 4) {
		printf("1. 입력\n");
		printf("2. 삭제\n");
		printf("3. 출력\n");
		printf("4. 종료\n");
		printf("번호 입력 >> ");
		scanf("%d", &sel);

		switch (sel) {
		case 1:
			pritf("이름입력: ");
			scanf("%s", data.name);
			//이름 입력
			scanf("%d", data.age);
			//나이 입력
			Push(&top, data);
			//Push 함수 호출
			system("pause");
			break;
		case 2:
			//Pop 함수 호출
			Pop(&top);
			system("pause");
			break;
		case 3:
			Print(&top);
			//Print 함수 호출
			system("pause");
			break;
		case 4:
			while (top) {
				Pop(&top);
			}
			//Pop 함수 호출
			break;
		default:
			printf("1 ~ 4 중 하나를 입력해주세요.\n");
			system("pause");
		}
		system("cls");
	}

	return 0;
}

 

 

이상입니다!

728x90