본문 바로가기

반응형

C++

★ 10. 연결 리스트를 이용한 스택 구현하기 연결 리스트를 이용한 스택 구현 전과 마찬가지로 각 기능별 함수로 구현되었습니다. // # 연결 리스트를 이용한 스택 ##include #include using namespace std;typedef int element; struct stackNode { element data; // # 다음 노드를 가리키는 포인터 변수 # stackNode *link; }; stackNode* top; // # 스택이 비어 있으면 true 아니면 false를 반환 # int isEmpty() { // # top 포인터가 NULL이면 스택이 비어 있는 것 # return (top == NULL); } // # 스택의 TOP에 원소를 삽입 # void push(element item) { // # 새로운 노드 공간을 .. 더보기
★ 9. 배열을 이용한 스택 구현하기 배열을 이용한 스택 구현 // # 배열을 이용한 스택 ##include using namespace std; // # 배열 크기 # #define MAX_STACK_SIZE 5 typedef int element; // # 스택에 원소를 저장하기 위한 배열 # element stack[MAX_STACK_SIZE]; // # TOP의 위치 # int top = -1; // # 처음엔 맨 아래를 위치하기 때문에 '-1' # // # 스택 초기화 함수 # void initialize() { // # TOP 인덱스를 -1로 주어 스택을 비움 # top = -1; } // # 스택이 비어 있으면 true 아니면 false를 반환 # int isEmpty() { // # TOP 인덱스가 -1이면 true # ret.. 더보기
★ 8. 스택 스택 스택은 제일 먼저 삽입(push)된 데이터가 맨 아래에 쌓여 있고가장 최근에 삽입된 데이터가 맨 위에 쌓이는 구조를 가지고 있습니다. 데이터를 삭제(pop)할 때에는 가장 최근에 삽입한 데이터를 꺼내는구조이고 스택에서의 입출력은 맨 위에서만 일어나고중간에서는 데이터를 삽입 또는 삭제를 할 수 없는 구조입니다.~ ★ 스택은 가장 최근에 들어온 데이터가 가장 먼저 나가기 때문에[후입선출] : LIFO( Last - In, First - Out : 라이포 리포)라고도 합니다. 스택에서 원소의 삽입과 삭제가 일어나는 곳을 TOP라 하고 스택의다른 한쪽 끝, 즉 TOP의 반대쪽 끝을 BOTTOM이라고 합니다. 다음 포스팅에서 코드적인 부분으로올리겠습니다. 더보기
★ 7. 이중 연결 리스트 구현하기 - 이중 연결 리스트 - (이중 원형 연결리스트) 각 기능별로 함수로 구현이 된 이중 연결 리스트 예제 소스입니다."한번에 이해되는 C 자료구조" 책을 참조하였습니다. // # 이중 원형 연결 리스트에 원소 추가, 삽입하기 # #include #include using namespace std;typedef int element;struct tagListNode { tagListNode* leftLink; // # 왼쪽 노드를 가리키는 링크 필드 # element data; // # 노드를 구성하는 데이터 필드 # tagListNode* rightLink; // # 오른쪽 노드를 가리키는 링크 필드 # };// # 헤더의 정보를 저장할 구조체 선언 # struct tagListHead { tagListN.. 더보기
★ 6. 이중 연결 리스트 - 이중 연결 리스트 - 원형 연결 리스트는 단순 연결 리스트보다는 이점이 있다. 그러나!아직도 몇 가지 단점이 있는데, 단점으로는 리스트를 뒤로 순회할 수없다는 점과 삭제하고자 하는 노드에 대한 포인터만으로는 그 노드를삭제할 수 없다는 점 등이 있다. 이러한 문제를 해결하기 위하여 어떤 노드에 대한 다음 노드뿐만아니라 전 노드까지 알 수 있도록 하여, 한 가지 방향의 탐색이 아닌양쪽 방향의 탐색이 가능하게 구성한 것이 이중 연결 리스트이다. 하나의 노드를 가진 구조체입니다.~struct LISTNODE{LISTNODE* lLink; // # 왼쪽(선행) 노드를 가리키는 링크 필드 #int data; // # 노드를 구성하는 데이터 필드 #LISTNODE* rLink; // # 오른쪽(후속) 노드를 가리.. 더보기
★ 5. 원형 연결 리스트 구현하기 - 원형 연결 리스트 - 각 기능별로 함수로 구현이 된 원형 연결 리스트 예제 소스입니다."한번에 이해되는 C 자료구조" 책을 참조하였습니다. // # 원형 연결 리스트에 원소 추가, 삽입하기 # #include #include using namespace std; typedef int element; struct tagListNode { // # 노드를 구성하는 데이터 필드 # element data; // # 다음 노드를 가리키는 링크 필드 # tagListNode* link; }; // # 헤더의 정보를 저장할 구조체 선언 # struct tagListHead{ tagListNode* head; }; // # 연결 리스트를 초기화하는 함수 # tagListHead* createLinkedListHe.. 더보기
★ 3. 선형 연결 리스트 구현하기[추가] 기존 선형 연결 리스트에서 좀 더 추가된 소스입니다. #include #include using namespace std;// # 노드 구조체 # struct tagListNode { int data; // # 노드를 구성하는 데이터 필드 # tagListNode* link; // # 다음 노드를 가리키는 링크 필드 # };// # 헤드 구조체 # struct tagListHead { tagListNode* head; };// # 리스트를 초기화 하는 함수 # tagListHead* createLinkedHeadList() { tagListHead* L; // # 헤더의 공간을 확보 # L = new tagListHead; L->head = NULL; return L; }// # 연결 리스트에 노드를 추.. 더보기
★ 2. 선형 연결 리스트 구현하기 선형 연결 리스트 구현 기능별로 함수로 나누어서 구현하였습니다.출처는 대학 교재로 사용하던 "한번에 이해되는 C 자료구조" 책을 보면서..#include #include using namespace std;// # 노드 구조체 # struct tagListNode { int data; // # 노드를 구성하는 데이터 필드 # tagListNode* link; // # 다음 노드를 가리키는 링크 필드 # };// # 헤드 구조체 # struct tagListHead { tagListNode* head; };// # 리스트를 초기화 하는 함수 # tagListHead* createLinkedHeadList() { tagListHead* L; // # 헤더의 공간을 확보 # L = new tagListHead.. 더보기
★ 1. 연결 리스트를 이용한 선형 연결 리스트 선형 연결 리스트 선형 연결 리스트에 대해서 살펴보겠습니다.먼저 연결리스트가 등장하게 된 배경부터 알아봅시다. 선형 리스트를 구현하기 위해서 배열을 사용하였을경우에 생기는 단점 때문에 연결 리스트가 등장하게되었습니다.배열은 구현이 쉽고 인덱스를 이용하여 손쉽게 원소에접근할 수 있다는 장점이 있지만 연속된 기억 공간에메모리 할당을 받기 때문에 데이터를 삽입 혹은 삭제를해야 할 경우 원소들을 이동해야 하므로, 오버헤드가 크고배열은 선언할 때 할당된 메모리만을 사용할 수 있죠.그러므로 배열은 여분의 공간까지 생각하여 미리 메모리를할당해야합니다. 이러한 메모리의 낭비를 없애기 위해서 나온 자료구조가바로 연결리스트 입니다.연결 리스트는 여러 개의 작은 공간을 연결하여 하나의 전체자료구조를 표현하기 때문에 크기 변.. 더보기
★ 12. const const란? const는 변수를 상수화시키는 것을 말합니다. 간단합니다.! int age = 25; age = 10; cout 더보기

반응형