반응형

스택 16

[C언어 자료구조] 5.4 스택 소스 코드

[C언어 자료구조] 5.4 스택 소스 코드//common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력 해제 //Book.h #pragma once #include "common.h" #define MAX_TIT_LEN 200 #define MAX_AUT_LEN 20 typedef struct _Book Book; struct _Book { char title[MAX_TIT_LEN+1]; char author[MAX_AUT_LEN+1]; int num; }; Book *New_Book..

[C언어 자료구조] 5.3 스택 테스트

[C언어 자료구조] 5.3 스택 테스트 스택을 테스트하는 코드를 작성합시다. int main() { EHStack *ehs = 0; Book *book = 0; 먼저 스택을 동적으로 생성합니다. ehs = New_EHStack(); 적당히 자료를 스택에 보관합니다. 여기에서는 세 개의 도서를 보관할게요. EHStack_Push(ehs,New_Book("C언어","홍길동",10)); EHStack_Push(ehs,New_Book("C++언어","강감찬",20)); EHStack_Push(ehs,New_Book("자료구조","김구",5)); 이제 하나의 자료를 꺼내어 봅시다. 가장 최근에 보관한 자료는 "자료구조"입니다. book = (Book *)EHStack_Pop(ehs); if(book) { Book..

[C언어 자료구조] 5.2 스택 구현

[C언어 자료구조] 5.2 스택 구현 스택 구현은 큐 구현과 매우 흡사합니다. 먼저 동적으로 스택을 생성하는 함수와 소멸하는 함수는 큐 구현처럼 래퍼 함수로 구현합니다. EHStack *New_EHStack() { return New_LinkedList(); } void Delete_EHStack(EHStack *ehs) { Delete_LinkedList(ehs); } 스택에 자료를 보관하는 함수도 연결리스트에 순차 보관하는 함수를 호출하는 래퍼 함수입니다. void EHStack_Push(EHStack *ehs, Element data) { LinkedList_PushBack(ehs,data); } 스택에서 가장 최근에 보관한 자료를 꺼내는 함수를 작성합시다. 이 부분이 큐와 차이가 있는 부분입니다...

[C언어 자료구조] 5.1 스택 설계

[C언어 자료구조] 5.1 스택 설계 스택도 연결리스트를 래핑하여 만들게요. 연결리스트 형식을 스택 형식으로 타입 재지정합니다. #include "LinkedList.h" typedef LinkedList EHStack; 동적으로 스택을 생성하는 함수와 소멸하는 함수를 제공합시다. EHStack *New_EHStack(); void Delete_EHStack(EHStack *ehs); 스택에 자료를 보관하는 함수와 꺼내는 함수를 제공합시다. void EHStack_Push(EHStack *ehs, Element data); Element EHStack_Pop(EHStack *ehs); 스택이 빈 상태인지 확인하는 함수도 제공합시다. int EHStack_IsEmpty(EHStack *ehs);

[C언어 자료구조] 5. 스택(Stack)

[C언어 자료구조] 5. 스택(Stack) 스택은 큐와 달리 가장 최근에 보관한 자료를 먼저 꺼내는 후입선출(LIFO, Last In First Out)형태로 동작하는 자료구조입니다. 스택은 배열이나 연결리스트로 구현할 수 있어요. 여기에서는 배열로 구현하는 것을 먼저 해 본 후에 미리 만든 연결리스트를 래핑하는 방법을 살펴보아요. 먼저 스택 구조체를 정의하세요. 스택에는 저장소와 가장 최근에 보관한 위치를 멤버로 갖고 있어야 해요. #define STACK_SIZE 10 typedef struct Stack //Stack 구조체 정의 { int buf[STACK_SIZE];//저장소 int top; //가장 최근에 보관한 인덱스 }Stack; 스택에는 보관하는 동작을 Push라 부르고 꺼내는 동작을 P..

온라인 무료 공개 [디딤돌 자료구조와 알고리즘 C++]

온라인 무료 공개 [디딤돌 자료구조와 알고리즘 C++]책 소개 이 책에서는 컴퓨터 프로그래머의 기초 지식인 알고리즘과 자료구조를 이론적인 접근과 실질적인 구현을 다루고 있어요.자료구조는 프로그램에 관라할 데이터를 어떠한 구조로 보관하고 접근할 것인가를 다루는 것입니다. 선형 자료구조인 배열이나 연결리스트, 스택, 큐와 비선형 자료구조인 트리, 그래프 등이 있습니다. “선형 자료구조에는배열, 연결리스트, 스택, 큐”“비선형 자료구조에는트리, 그래프” 알고리즘은 문제를 해결하기 위한 논리의 집합이예요. 문제 해결 방법으로 분류하면 반복 알고리즘, 재귀 알고리즘, 분할 정복, 동적 프로그래밍, 탐욕 알고리즘 등이 있죠.“반복 알고리즘, 재귀 알고리즘,분할 정복 알고리즘,동적 알고리즘,탐욕 알고리즘”컴퓨터 프로..

[디딤돌 자료구조와 알고리즘] 5.4 스택 (STACK)

5.4 스택(STACK) 스택은 큐와 달리 가장 최근에 보관한 자료를 먼저 꺼내는 후입선출(LIFO, Last In First Out)형태로 동작하는 자료구조입니다. 스택은 배열이나 연결리스트로 구현할 수 있어요.여기에서는 배열로 구현하는 것을 먼저 해 본 후에 미리 만든 연결리스트를 래핑하는 방법을 살펴보아요. 먼저 스택 구조체를 정의하세요.스택에는 저장소와 가장 최근에 보관한 위치를 멤버로 갖고 있어야 해요. #define STACK_SIZE 10typedef struct Stack //Stack 구조체 정의{ int buf[STACK_SIZE];//저장소 int top; //가장 최근에 보관한 인덱스}Stack; 스택에는 보관하는 동작을 Push라 부르고 꺼내는 동작을 Pop이라 불러요.void P..

[디딤돌 자료구조와 알고리즘] 5. 선형 자료구조 - 개요

5. 선형 자료구조 이번 장에서는 선형 자료구조에 관하여 살펴봅시다. 이미 앞 장에서 비선형 자료구조인 이진 탐색 트리는 살펴보았습니다. 선형 자료구조는 자료를 보관하는 논리적인 구조를 하나의 선으로 나타낼 수 있습니다. 대표적인 선형 자료구조에는 배열과 연결리스트, 스택과 큐가 있습니다. 배열은 같은 형태의 자료를 연속적인 메모리에 관리하는 자료구조입니다. 그리고 연결리스트는 노드의 선형 집합이며 노드는 하나의 자료와 다른 노드의 위치 정보인 링크로 구성합니다. 스택과 큐는 단순히 자료를 보관하고 꺼내는 동작을 제공하며 스택은 최근에 보관한 자료를 꺼내는 LIFO(Last In First Out), 큐는 먼저 보관한 자료를 꺼내는 FIFO(First In First Out) 구조입니다. 관련 게시글 [..

10.2.2 순열 문제 소스 코드 [디딤돌 자료구조와 알고리즘 with C++]

10.2.2 순열 문제 소스 코드 다음은 앞에서 작성한 순열 문제의 소스 코드입니다. //Heuristic.h#pragma once#include #include using namespace std;typedef vector Bucket;typedef Bucket::iterator BIter;typedef Bucket::const_iterator CBIter; class Heuristic;typedef vector Heues;typedef Heues::iterator HIter;typedef Heues::const_iterator CHIter; class Heuristic{ Bucket original; Bucket out;public: Heuristic(Bucket bucket); Heues EnumN..

10.2.1 순열 문제 구현

10.2.1 순열 문제 구현 순열 문제를 구현합시다. 0~9까지 공을 보관한 초기 경험 정보를 생성스택에 보관반복(스택이 비어 있지 않다면) 스택에서 경험 정보 꺼내옮 스택에서 꺼내온 경험 정보에서 다음 경험(공을 하나 더 꺼내는) 목록 조사 반복(다음 경험 목록을 순차적으로 반복) 바구니에 공이 비면 결과 출력 그렇지 않다면 스택에 보관 먼저 공을 보관한 바구니를 공의 번호를 보관하는 벡터로 표현할게요.typedef vector Bucket;typedef Bucket::iterator BIter;typedef Bucket::const_iterator CBIter;그리고 경험 정보를 벡터에 보관한 형식을 Heues로 정의할게요.class Heuristic;typedef vector Heues;typede..

반응형