본문 바로가기

자료구조7

[자료구조 4장] - 연결리스트(4) 연결리스트(4) 원형 연결리스트 구조와 구현방법 단순 연결리스트의 마지막 노드 포인터 : NULL 이 마지막 노드 포인터를 첫 번째 노드(head node)의 주소를 가리키도록 할 때 이 리스트를 원형 연결리스트 라고 한다. 원형 연결리스트의 장점 : 어느 하나의 노드로부터 다른 모든 노드로 접근 가능, 검색 시 처음부터 찾지 않고 현재 노드부터 검색 가능, 리스트 결합도 효율적 주의 : 검색을 끝낼 수 있는 노드가 있어야 한다. 없으면 무한루프에 걸릴 수 있다. 학생번호와 학점을 노드에 저장한 자기참조구조체 struct cnode를 다음과 같이 정의하고 이를 기본으로 원형 연결리스트의 구조와 구현방법에 대하여 알아보자. typedef struct cnode *npointer; struct cnode {.. 2024. 2. 18.
[자료구조 4장] - 연결리스트(3) 연결리스트(3) 응용 프로그램 동물연결리스트 예제 동물농장에 있는 5가지 동물의 종류(문자배열)와 동물의 수를 연결리스트로 구축하여 출력하는 프로그램을 작성하자. 우선 dog 10 하나의 데이터 항목 1개의 노드가 초기에 주어져 있고 4가지 동물의 종류와 동물의 수를 받아 차례로 연결하는 프로그램이다. typedef struct fnode *fpointer; struct node { char animal[10]; int item; fpointer next; }; void main() { fpointer head=NULL, ptr, another, before; int k, how_many=0; head = (fpointer) malloc(sizeof(struct fnode)); strcpy(head->a.. 2024. 2. 8.
[자료구조 4장] - 연결리스트(2) 연결리스트(2) 단순 연결리스트 구조와 연결방법 저장하려는 연결리스트 구조의 노드들은 첫 노드부터 꼬리에 꼬리를 물고 한 방향으로 연결되어 있으며 마지막 노드의 포인터는 NULL 값을 가진다. ex) 문자열의 집합 {"bake", "cake", "sake", "take"}을 알파벳 순서로 연결리스트에 저장하는 경우 헤드 노드 : 첫 번째 노드의 포인터 헤드 노드의 포인터를 잃으면 리스트 안의 전체 데이터에 접근할 수 없게 된다. 화살표는 다음 자료의 기억 장소 번지이며, 마지막 노드의 다음 데이터는 없으므로 NULL값을 가지게 된다. 이렇게 단순 연결리스트는 헤드 노드로부터 NULL 값을 가지는 노드까지 한 방향으로 연결되어 있다. 연결리스트를 사용하여 프로그램을 작성할 때, 리스트의 끝을 검사하는 경우.. 2024. 1. 30.
[자료구조 3장] - 배열과 구조체(3) 배열과 구조체(3) 구조체 필드 : 어떤 객체를 표현하는 속성 레코드 : 필드들의 모임 구조체 : 여러 개의 레코드를 테이블로 저장하여 처리하는 관계형 데이터베이스 시스템 처럼 레코드 데이터를 위해 마련된 C 프로그램의 자료구조 구조체의 정의와 응용 구조체는 다양한 자료형의 연관된 자료를 묶어 새로운 자료형을 만들어 준다. 키워드 struct를 이용하여 member를 구초제 태그 이름으로 정하여 중괄호 사이에 연관된 자료를 다음과 같이 선언하면 struct member라는 새로운 타입이 생긴다. struct member { int id; char name[20]; float score; }; 구조체가 마련되었다면, 다음과 같은 선언문으로 프로그램에서 변수로 사용하게 된다. struct member one.. 2024. 1. 14.
[자료구조 3장] - 배열과 구조체(2) 배열과 구조체(2) 배열 응용 프로그램 배열의 차원 : 배열의 각 항목에 접근하기 위해 필요한 인덱스의 수 자료의 형태가 그려지지 않으면 프로그래밍에서 다루기 쉽지 않기 때문에 1, 2차원 배열이 주로 활용된다. 실습 프로그램 - 1차원 배열에 n개 데이터 읽어들여 평균을 구하고 평균보다 더 큰 값의 데이터 수를 구하는 프로그램 - 영어학원에 4개의 시간에 3분의 강사가 수업을 개설했을 때, 각 시간의 각 선생님께 수강 신청한 학생의 수를 2차원 배열에 입력받아 저장하고 각 선생님 클래스의 학생수를 출력해주는 프로그램 - 전화번호부 정보를 가지는 문자열의 2차원 배열, 즉 문자형의 3차원 배열에 이름과 전화번호 데이터를 준비하고 있다고 하자. 이때 전화번호부에 저장 되어 있는 이름을 순서대로 번호를 붙여.. 2024. 1. 7.
[자료구조 1장] - 컴퓨터와 프로그램의 이해(2) 컴퓨터와 프로그램의 이해(2) 저번에 작성한 첫 글은 챕터 1의 1-1과 1-2까지의 내용을 정리한 것입니다. 이제부터는 소개말 없이 바로 내용을 작성할 생각입니다. 프로그램과 자료구조 프로그램 : 자료구조 + 알고리즘 자료와 자료형 기본 자료형 : int, float, double, char 등 포인터 자료 : 다른 변수의 메모리 주소 값을 가지는 기본 자료형 자료구조의 분류 선형 구조 : 자료의 전, 후 항목 사이의 관계가 1:1, 자료의 앞과 뒤의 순서가 명확하게 나란히 줄을 선 형태인 리스트 구조 -> 배열, 스택, 큐, 연결리스트 등 비선형 구조 : 자료 항목 사이에 어떤 자료와 관계가 있는 다른 자료가 여러 개인 경우, 즉 1:n 또는 n:m의 관계인 그래프적 특성을 갖는 자료구조 -> 조직의.. 2023. 12. 24.
[자료구조 1장] - 컴퓨터와 프로그램의 이해(1) 컴퓨터와 프로그램의 이해(1) 안녕하세요 해당 카테고리는 컴퓨터 공학을 전공하면서 배운 자료구조 지식을 다시한번 정리하고 공부하기 위해 작성하는 글입니다. 자료구조는 컴공이라면 반드시 알고 있어야 하는 학문이기 때문에 지속적인 공부가 필요합니다. 이 글은 정보를 소개 해준다기보다 내용 자체를 정리하는 것이기 때문에 긴 설명 대신 간략하게 요약되어 있을 수 있습니다. 컴퓨터와 데이터 컴퓨터의 사전적 정의 : 전자회로를 이용한 고속 자동 계산기 기능 입력 : 마우스, 키보드, 터치스크린 등 출력 : 모니터, 프린터 등 기억 : 메모리, 하드디스크, USB 등 처리 : 중앙처리장치(CPU) 컴퓨터의 구성 : 중앙처리장치, 기억장치(저장장치), 주변장치(입/출력) 하드웨어와 이진데이터 비트(bit) : CPU가.. 2023. 12. 23.