분류 전체보기

C프로그래밍/개인 공부

2차원 배열 포인터 형으로 함수 인자로 전달하기

만약 2차원 배열을 함수의 인자로 전달해서(포인터 형식으로), 그 2차원 배열을 정렬한다고 가정해보자. void sort(int (*arr)[5], int n) { int i = 0; int j = 0; int least; int temp; for(i = 0; i arr[n][j]) least = j; } temp = arr[n][i]; arr[n][i] = arr[n][least]; arr[n][least] = temp; } } 2차원 배열을 포인터 형식으로 받고, n번째의 행을 정렬하는 함수다. 여기서 봐야할 부분은 void sort(int (*arr)[5], int n) 이다...

백준

BOJ - 2581 소수 (C++)

https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 어떻게 풀 것인가? 처음에는 소수를 판별하는 함수(2부터 n보다 작은 수로 나눠서 나머지가 0인게 중간에 있다면 소수O) 를 사용하여 풀려고 했다. 하지만, 이 방식을 사용하게 된다면 시간초과가 뜰 가능성이 매우 높다. '에라토스테네스의 체'를 사용하여 문제를 풀 수도 있었지만, for문의 사용을 최대한 줄여서, 연산시간을 최대한 줄일려고 노력했다. 소스 코드 #include using namespace s..

자료구조(Data Structure)

C언어로 원형 연결 리스트 구현하긩

원형 연결 리스트란? 원형 연결 리스트는 마지막 노드가 첫 번째 노드를 가리키는 리스트다. 단순 연결 리스트라면 마지막 노드는 NULL을 가리키지만, 원형은 첫 번째 노드를 가리킨다. 장점? - 원형 연결 리스트는 원형적으로 구현되어있어 하나의 노드에서 다른 모든 노드를 접근할 수 있다. 왜냐면, 노드를 쭉 따라다가보면 결국 모든 노드를 거쳐 자기 자신 노드로 되돌아 올 수 있기 때문에. 그리고, 삽입 / 삭제가 단순 연결 리스트보다 간편하다. (이전 노드를 가리키는 포인터가 필요없다!) 원형 연결 리스트는 리스트의 끝에 노드를 삽입할 때, 단순 연결 리스트보다 효율적이다. 단순 연결 리스트의 경우, 리스트의 끝에 노드를 삽입할 때, 첫 노드부터 링크를 따라서 끝까지 도달해야만 한다. 하지만! 원형 연결..

자료구조(Data Structure)

C언어로 연결리스트(Linked List) 구현하기

연결 리스트 저번 시간에 구현했던 그냥 '리스트'와는 달리, 연결 리스트는 동적으로 크기가 변할 수 있고, 삭제나 삽입 시에 데이터를 이동할 필요가 없다. why? 이것이 연결리스트의 기본 구조이다. 데이터가 담긴 상자를 노드(node)라고 부른다. 노드와 노드를 연결하는 선을 포인터(pointer)로 구현한다. 연결 리스트에서는 노드를 연결시켜주는 줄만 바꾸면, 삽입 / 삭제가 간편하다. 만약 b와 c사이에 새로운 데이터를 삽입한다고 가정한다면, 그림과 같이 b가 n을 가리키도록, 그리고 n이 c를 가리키도록 줄을 수정해주면 된다. 만약 c를 삭제한다고 가정한다면, 이렇게 줄을 연결하면 된다. 연결 리스트의 구조 우리는 상자를 node라고 불렀다. node는 2가지 영역으로 나뉘는데, 하나는 데이터가 ..

자료구조(Data Structure)

C언어로 리스트 구현하기

리스트란? 우리가 자료를 정리하는 방법 중 하나이다. 예를 들어, 오늘 해야 할 일을 적는다든가, 버킷 리스트를 적는다든가 등등.. 리스트는 항목들이 차례대로 저장되어 있으며, 각각의 항목들은 순서나 위치를 갖는다. 리스트는 배열과 연결리스트를 이용하여 구현할 수 있다. 이번에는 배열로 리스트를 구현 해보겠다. 배열로 리스트 구현 배열로 리스트는 구현하면 메모리가 순차적으로 할당된다. 리스트를 구현하기 위해서 어떤 것이 필요한지 알아보자. 1. 리스트 정의 2. 리스트 초기화 함수 3. 포화상태 공백상태 검사 함수 4. 특정한 위치에서 값을 얻어내는 함수 5. 끝부분에 추가 / 특정 위치에 추가 함수 6. 삭제함수 7. 출력함수 1. 리스트 정의 #include #define MAX_LIST 100 ty..

자료구조(Data Structure)

C언어로 덱(Deque) 구현하기

덱이란? 일반적인 큐, 원형큐에서는 rear에서 삽입, front에서 삭제가 가능했다. Deque은 double edged queue의 줄임말로, 큐의 front, rear에서 삽입, 삭제가 모두 가능한 큐를 말한다. 큐, 스택과 마찬가지로 중간에서 삽입과 삭제는 일어나지 않는다. 덱을 구현하기 위해 필요한 것 1. 덱 생성 2. 덱 초기화 3. 공백상태인지 포화상태인지 검사 4. add_front(앞에 추가) / add_rear(뒤에 추가) 5. delete_front(앞에서 삭제) / delete_rear(뒤에서 삭제) 6. get_front(뒤에서 요소반환) / get_rear(뒤에서 요소반환) 7. 덱 출력 1. 덱 생성 #include #define MAX_DEQUE 5 typedef int e..

Jminu
'분류 전체보기' 카테고리의 글 목록 (5 Page)