본문 바로가기

반응형

Programming/Data Structure

(25)
C언어로 리스트 구현하기 (배열) - 배열로 만든 리스트는 구현하기는 단순하지만, 고정된 크기이다. - 연결리스트는 구현이 조금 복잡하지만, 항목과 항목을 연결하는 방식이라서 삽입과 삭제가 매우 간편하고 크기가 제한적이지 않다. 리스트 관련 함수 add_first(list, item) : 첫번째 위치에 요소를 추가 add(list, pos, item) : pos 위치에 요소를 추가 delete(list, pos) : pos 위치의 요소를 제거 is_empty(list) : 리스트가 비었는지 검사 is_full(list) : 리스트가 꽉 찼는지 검사 #include typedef int element; typedef struct { element list[100]; int length; // 리스트 길이를 확인하기 위한 변수 }ArrayL..
[자료구조] C언어 연결리스트 스택 구현 - 배열로 스택을 구현할 수 있지만 고정된 크기를 가진다. - 연결리스트는 스택의 크기에 재약이 없다. - 다만, 포인터를 사용해 주소값을 저장하기 때문에 4바이트의 공간이 더 필요하게 된다. 1. 연결리스트 스택 구현을 위한 연결리스트 생성 typedef struct stack { // 연결리스트 노드 구조체 정의 char data; // data를 저장하는 변수 struct stack* link; // 다음 노드의 주소값을 저장할 포인터 변수 } stack; // typedef으로 struct 이름 지정 stack* top; // 스택의 맨 위 노드 주소를 저장하는 포인터 변수 2. 스택 상태 확인 함수 int isEmpty() { if(top == NULL) { printf("Error : Stac..
C언어 구조체란? 구조체 개념 구조체란 사용자가 c언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이다. 구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다. 배열이 같은 타입의 변수 집합이라면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것이다. 이때 구조체를 구성하는 변수를 구조체의 멤버 또는 멤버 변수라고 한다. 구조체 정의와 선언 구조체 정의는 struct키워드를 사용한다. struct 구조체이름 { 멤버변수1의 타입 멤버변수1의 이름; 멤버변수2의 타입 멤버변수2의 이름; .... }; struct book { char title[30]; char author[30] int price; }; 아래와 같이 변수를 선언할 수 있다. struct book my_..
포인터, 배열, 구조체 포인터 변수란? 변수 - 프로그램에서 사용되는 값을 저장하기 위한 컴퓨터 메모리 상의 일정 영역 포인터 변수 - 어떤 변수의 위치를 참조하고 그 주소값을 저장한다. - 포인터 변수에는 주소값만을 저장할 수 있다. 포인터의 장점 - 기존 프로그래밍에서는 변수만 조작이 가능하기 때문에 변수를 수정해야 했지만, 포인터를 사용하므로써, 변수는 그대로 두고 포인터를 조작할 수 있다는 장점이 있다. - 가장 빠르게 프로그램할 수 있다는 것.
C언어를 활용한 스택자료구조 구현 (포인터 개념 제외) #include int arr[10]; int idx = 0; void push(int n) { if(idx>=10) { printf("오류: 배열이 꽉 찼습니다.\n"); return; } arr[idx] = n; idx++; return; } int Top(void) { if (idx < 0) { printf("오류: 배열이 비었습니다.\n"); return; } return arr[idx-1]; } int pop() { if (idx < 0) { printf("오류: 배열이 비었습니다.\n"); return; } idx--; return arr[idx]; } void clear(void) { idx = 0; return; } void StackPrint(void) { int i; for (i=0;i
List Interface (리스트 인터페이스) List Interface 1. 동일한 특성의 데이터를 묶어준다. 2. 인덱스를 사용하기 때문에 반복문의 변수를 통해 데이터를 모두 접근가능하다. 배열 1. 처음 선언한 배열의 크기는 변경할 수 없고, 이를 정적 할당이라고 한다. 2. 메모리에 연속적으로 나열되어 할당된다. 출처: https://st-lab.tistory.com/146
적절한 자료구조를 사용하는 방법
Set 자료구조란 무엇인가? Set 자료구조란 무엇인가? - Set은 집합이다. - 데이터를 중복해서 저장할 수 없다. - 입력 순서대로의 저장 순서를 보장하지 않는다. (예외. LinkedHashSet) - 기본적으로 List계열은 index(Node)로 관리하기 때문에 순서대로 저장되는 구조다. Set / Sorted Interface를 구현하는 클래스 1. HashSet 2. LinkedHashSet 3. TreeSet Set/ Interface에 선언된 대표적인 메소드 HashSet - 가장 기본적인 Set collection 클래스이다. - 입력순서 보장되지 않고, 순서도 보장되지 않는다. - hash에 의해 데이터의 위치를 특정시켜서 색인(Search)할 수 있게 만든 것이다. - hash와 set의 기능을 합친 것. -..

반응형