반응형

list 9

[C#] 컬렉션 실습 - IList 인터페이스 구현 약속한 컬렉션

실습) 다음 시나리오를 만족하는 프로그램을 작성하시오. 회원 관리 프로그램은 콘솔 응용 프로그램이다. 회원 관리 프로그램은 응용, 회원 관리자, 회원, 특별 회원 형식으로 구성한다. 응용에서는 사용자와 상호작용을 담당한다. 응용은 사용자에게 메뉴를 보여주고 선택한 메뉴를 수행하는 것을 반복한다. 메뉴에는 회원 추가, 회원 삭제, 회원 검색, 전체 회원 보기, 프로그램 종료가 있다. 회원 추가를 선택하면 회원 유형을 선택하고 회원의 정보를 입력받아 회원 관리자에게 추가요청한다. 회원은 이름과 주소를 사용자로부터 입력받고 추가 순으로 회원일련번호를 부여받는다. 특별 회원은 이메일 주소도 입력받는다. 회원 삭제 기능에서는 삭제할 회원의 일련번호를 사용자로부터 입력받아 회원 관리자에게 삭제요청한다. 회원 검색 ..

[C#] 8.2 컬렉션 - 개요

8.2 컬렉션 개요 프로그래밍하다 보면 여러 개의 개체를 구조적으로 관리하는 것은 자주 발생합니다. C#에서는 요소 개체의 집합체인 컬렉션을 다양하게 제공하고 있으며 같은 인터페이스를 기반으로 구현 약속하여 하나의 컬렉션 사용법을 익히면 다른 컬렉션을 사용법을 익히기 쉽습니다. C#에서 제공되는 컬렉션에는 하나의 개체로 보관하는 컬렉션들과 키와 값을 쌍으로 보관하는 컬렉션들이 있습니다. 하나의 개체로 보관하는 컬렉션들은 IList 인터페이스를 기반이거나 ICollection 인터페이스를 기반으로 정의되어 있습니다. 그리고 키와 쌍으로 보관하는 컬렉션들은 IDictionary 인터페이스를 기반으로 정의되어 있습니다. 또한, IList와 IDictionary 인터페이스는 모두 ICollection 인터페이스..

[자료구조와 STL] 18. list 만들기 – 더미 노드없는 이중 연결 리스트 소스 코드

//EHList.h – 더미노드가 없는 이중 연결 리스트 #pragma once namespace EHLIB {     templatetypename T>     class list     {         struct node         {             node *prev; //이전 노드의 위치 정보             node *next; //다음 노드의 위치 정보             T data; //노드에 보관된 요소             node(T data=0):data(data) //초기화             {                 prev = next = 0;             }         };       ..

[자료구조와 STL] 17. list 만들기 – 더미 노드없는 이중 연결 리스트

3. 2 list 만들기 – 더미 노드없는 이중 연결 리스트 이번에는 더미노드가 없는 이중 연결 리스트를 만들어 봅시다. 더미노드가 없는 이중 연결 리스트에도 node의 정의나 iterator의 정의는 차이가 없습니다. 여기에서는 차이가 있는 부분만 언급하겠습니다. 먼저, list를 생성했을 때의 초기 모습이 다를 것입니다. [그림 12] 더미노드 없는 이중 연결 리스트 초기화 모습 list(){ head = tail = 0; bsize = 0;} 생성자 메서드 외에 차이가 있는 부분은 노드를 매다는 hang_node와 노드의 연결을 끊는 dehang_hode와 시작 iterator를 반환하는 begin, 마지막 iterator를 반환하는 end가 있습니다. hang_node 메서드에서는 보관된 자료가 ..

[자료구조와 STL] 14. list 만들기 – 더미 노드있는 이중 연결 리스트

3. 1 list 만들기 – 더미 노드있는 이중 연결 리스트 먼저, 프로젝트를 만들어 앞에서 만든 파일들을 추가하는 것부터 하세요. 그리고 EHList.h를 추가합시다. EHList.h에는 템플릿 클래스인 list를 정의할 것입니다. 우리가 만들 list도 EHLIB 이름 공간 내에 정의할게요. #pragma oncenamespace EHLIB{ template class list { };}; list 클래스 내부에는 node 형식이 정의해야 합니다. 그리고 node의 멤버로는 보관할 요소와 다른 노드의 위치 정보가 있어야 할 것입니다. 여기에서는 이중 연결리스트로 만들 것이기 때문에 두 개의 링크를 캡슐화할게요. templateclass list{ struct node { node *prev; //이전..

[C# 동영상 강의] 16. 컬렉션

[C# 동영상 강의] 16. 컬렉션 다루는 내용컬렉션컬렉션 클래스 종류(Array, ArrayList,List,Hashtable,Dictionary,Queue,Stack 등) 대본 슬라이드 1이번 강의에서는 컬렉션에 대해서 살펴보기로 하겠습니다.슬라이드 2컬렉션 클래스는 데이터의 저장과 검색을 위해 특화된 클래스를 말합니다. 컬렉션 클래스에는 해쉬 테이블이나 스택, 사전, List 등이 있으며 대부분의 컬렉션 클래스는 공통적인 인터페이스를 구현을 함으로써 일관된 방법으로 사용할 수 있습니다. 또한, 제공되는 컬렉션 클래스를 기반으로 좀 더 특화된 컬렉션 클래스를 구현을 할 수 있게 하였으며 제네릭 컬렉션 클래스도 제공함으로써 값 형식을 저장할 때 발생하는 boxing과 unboxing과정에서의 오버헤드를..

5. list 만들기 [디딤돌 자료구조와 알고리즘 with C++]

5. list 만들기 이번에는 STL의 list를 모델 삼아 list를 만들어 보기로 해요. 4장에서는 vector를 만들었습니다. 그 프로젝트에서 헤더파일 포함문과 using 문만 변경하세요. //#include //#include //using std::vector; //using std::find; //using std::find_if; #include "list.h" #include "algorithm.h" using ehlib::list; typedef list Genres; typedef Genres::iterator GIter; typedef Genres::const_iterator GCIter; 물론 list.h 파일과 algorithm.h 파일을 프로젝트에 추가하세요. alogorithm..

3.2.3 list 사용 [디딤돌 자료구조와 알고리즘 with C++]

3.2.3 list 사용 STL의 list 사용 방법은 vector를 사용하는 방법과 매우 유사합니다. 차이가 있는 부분은 vector에서는 자료를 보관하는 저장소가 연속적인 메모리에 있어서 인덱스 연산을 제공하지만 list에는 제공하지 않는다는 점 정도입니다. 물론 vector에서 저장소의 크기를 확인할 때 사용하는 capacity 메서드나 저장소의 크기를 설정하는 reserve 메서드도 없습니다. 하지만 이 외에 대부분의 사용방법은 같습니다. 3.1.2 와 3.1.4에서 vector를 사용하는 코드에서 포함할 파일명과 타입 재지정하기 위한 typedef문에 vector만 list로 변경하면 아무런 컴파일 오류도 없으며 실행도 똑같이 동작합니다. //#include #include #include //..

3.2 연결리스트와 list [디딤돌 자료구조와 알고리즘 with C++]

3.2 연결리스트와 list 연결리스트는 보관하는 자료마다 별도의 노드에 보관하며 노드에 링크를 이용해 논리적으로 선형을 유지하는 자료구조입니다. 따라서 연결리스트를 노드의 선형 집합이라고 말합니다. 배열은 자료를 보관하는 메모리가 연속적인 형태를 지녀 순차리스트라 부르는 순차 자료구조입니다. 이에 반해 연결리스트는 자료 하나를 보관하는 노드마다 별도의 메모리를 할당하여 실제 메모리는 불연속적인 형태입니다. 따라서 연결리스트는 순차 자료구조가 아닙니다. 하지만 노드는 자료와 링크로 구성하는데 링크를 통해 연결리스트를 구성하는 노드들의 논리적인 구조를 선형의 모습으로 표현할 수 있습니다. 이러한 이유로 연결리스트를 선형 자료구조라 말하는 것입니다. 링크는 노드의 위치 정보를 말하며 노드에 링크가 하나인 연..

반응형