728x90

CS/자료구조 20

[ 자료구조 ] 리스트와 연결 리스트 공통점과 차이점 총정리

[ 자료구조 ] 리스트와 연결 리스트 공통점과 차이점 총정리 리스트와 연결 리스트 리스트 -순서가 있는 데이터를 말한다 -리스트 자료에 대한 연산은 검색, 변경(삽입, 삭제)이다. -스택과 큐는 리스트의 특수한 형태이다. 리스트 자료구조의 구현 -배열은 리스트 자료구조를 구현하는 방법이다. -연결 리스트도 리스트를 구현하는 방법이다. 배열을 이용한 리스트 구현은 다음과 같은 장단점이 있다. -연속된 기억 장소(장점) -데이터의 중간에 삽입, 삭제 시 데이터 이동이 필요하다. (단점) -데이터 크기가 수행 전(컴파일 때) 결정된다. (장점, 단점) -컴파일 때 결정되기 때문에 정적인 기억 장소 할당이다. (장점, 단점) 스택 : insertfirst, deletefirst 큐 : insertlast, de..

CS/자료구조 2021.11.01

[ 자료구조 ] linked list 노드 삭제, 연결 리스트를 이용한 스택 큐 구현

[ 자료구조 ] linked list 노드 삭제, 연결 리스트를 이용한 스택 큐 구현 노드 삭제 - ptr : 리스트 첫 노드를 가리키는 포인터 변수 - node : 삭제될 노드를 가리키는 변수 - trail : 삭제될 노드의 바로 앞 노드를 가리키는 변수 삭제될 노드가 첫 노드일 경우 - 삭제 후 ptr의 값이 바뀐다. 따라서 ptr의 포인터 변수로 주소를 받아 ptr의 값을 변경해야 한다. void delete(list_ptr * ptr, list_ptr trail, list_ptr node) { if(node==*ptr) *ptr = node->link; else trail->link = node->link; free(node); } // 리스트의 첫 노드, 삭제될 노드의 앞 노드, 삭제될 노드 v..

CS/자료구조 2021.10.30

[ 자료구조 ] linked list 연결 리스트 , k값을 가진 노드 삭제 삽입 함수

[ 자료구조 ] linked list 연결 리스트 , k값을 가진 노드 삭제 삽입 함수 리스트는 아무 곳에서나 삽입, 삭제가 일어날 수 있다. k값을 가진 노드 삭제 함수 데이터 값이 k인 노드를 찾는다. before : k값을 가진 노드의 앞 노드이다. temp : k값을 가진 노드이다. 이 알고리즘에서 찾는 삭제할 노드이다. before의 링크를 k값을 가지는 링크로 바꾼다. 그리고 반복문을 빠져나온다. #include #include struct node { int data; struct node * link; }; typedef struct node list_node; typedef list_node * list_ptr; void delete(list_ptr p, int k) { list_ptr ..

CS/자료구조 2021.10.29

[ 자료구조 ] linked list 연결 리스트 반복문으로 node 생성하기

[ 자료구조 ] linked list 연결 리스트 반복문으로 node 생성하기 데이터 값이 역순으로 생성되는 경우 #include #include struct node { int data; struct node * link; }; typedef struct node list_node; typedef list_node *list_ptr; int main(){ list_ptr ptr = NULL, before = NULL; int i; // 그 전 노드를 기억하기 위해 before을 사용한다. for(i = 1; idata = i*1; //데이터 값 설정 ptr->link = before; // 첫번째 생성될때는 NULL값이, 반복문이 진행되면 before의 링크가 전달 before = ptr; // ptr..

CS/자료구조 2021.10.29

[ 자료구조 ] 단순 연결 리스트

[ 자료구조 ] 단순 연결 리스트 Heap 영역은 공유되는 영역으로 동적 할당 공간을 만든다. 연결 리스트는 이렇게 동적 할당된 방법을 사용한다. 동적 할당된 방법을 사용하면 원하는 크기를 할당할 수 있어 효율적이다. 단순 연결 리스트를 활용하면 데이터를 움직이지 않는다는 장점이 있다. 단순 연결 리스트 연결 리스트의 가장 간단한 형태로 그냥 연결 리스트라고 부르기도 하고 단일 연결 리스트라고 부르기도 한다. 노드들을 연결한 형태이며 노드는 데이터 부분과 링크 부분으로 구성된다. 데이터 부분은 한 개 혹은 여러 개의 속성을 저장할 수 있다. 링크 부분은 다음 노드의 주소 값을 가리킨다. 동적 기억 할당과 해제가 가능하다. 동적 해제는 free 함수를 사용한다. 간단하게 데이터를 노드라고 부르기도 한다. ..

CS/자료구조 2021.10.28

[ 자료구조 ] 연결리스트를 만들기 위한 구조체 선언과 typedef 활용

[ 자료구조 ] 연결 리스트를 만들기 위한 구조체 선언과 typedef 활용 연결 리스트를 만들기 위해서는 자기 참조 구조체가 필요하다. 데이터를 저장할 필드가 있어야 하고, 다른 데이터 주소를 포인터로 가리키는 필드가 있어야 한다. 또한 이렇게 만들어진 구조체를 typedef 선언해 더 간단하게 표현할 수 있다. 정적 기억 장소에 데이터 저장 (활용도 낮음) struct node{ int data; struct node *link; } typedef struct node list_node; typedef list_node * list_ptr; list_node item1, item2, item3; item1.data = 10; item2.data = 20; item3.data = 30; item1.li..

CS/자료구조 2021.10.27

[ 자료구조 ] 링크드 리스트 Linked List 연결 리스트 동적 기억 장소에서 포인터 사용

[ 자료구조 ] 링크드 리스트 Linked List 연결 리스트 동적 기억 장소에서 포인터 사용 포인터가 가리키는 곳의 타입은 주소로 정수형이지만, 연결 리스트(링크드 리스트)가 가지는 포인터 타입은 가리키는 곳의 타입을 고려해야 한다. sizeof 연산자 sizeof 연산자는 몇 바이트를 차지하는지 알려주는 연산자이다. sizeof(int) = 4 sizeof(float) = 4 sizeof(char) = 1 링크드 리스트 정적 기억 장소에서 포인터 사용 (활용도 낮음) #include #include int main(){ int *pi; float *pf; *pi = 1024; *pf = (float) 3.14; //------------------------compile printf("an inte..

CS/자료구조 2021.10.26

[자료구조] 중위식을 후위식으로 변환하기

[자료구조] 중위식을 후위식으로 변환하기 #define _CRT_SECURE_NO_WARNINGS #include #include #include #define MAX_STACK_SIZE 100 #define MAX_EXPR_SIZE 100 char expr[MAX_EXPR_SIZE]; int top = -1; int stack[MAX_STACK_SIZE]; /* isp and icp arrays ? index is value of precedence lparen, rparen, plus, minus, times, divide, mode, eos */ void push(int item){ if (top > = MAX_STACK_SIZE -1){ printf("stack_full()\n"); return;..

CS/자료구조 2021.10.09

[ 자료구조 ] C언어 포인터 / 구조체 / 자기 참조 구조체 / 희소 행렬

[ 자료구조 ] C언어 포인터 / 구조체 / 자기 참조 구조체 / 희소 행렬 배열 배열은 기억 장소에서 연속된 위치를 차지한다. sizeof() 함수는 데이터의 길이를 byte로 반환하는 함수이다. C 언어에서 sizeof(int)의 값은 2 byte이지만 시스템에 따라서 4 byte인 경우도 있다. list [0]은 기억 장소의 주소이기도 하다. 인덱스 값을 바꿀 때마다 n*sizeof(int)를 n*sizeof(int) 하면 좋다. 포인터 타입은 데이터가 기억 장소의 주소를 저장하는 타입이다. 사람이 사는 모든 집에 주소가 있고 컴퓨터의 기억 장소도 주소가 있다. 주소를 기억하는 변수가 포인터 변수이다. 배열 변수는 주소 값으로 처리한다. 그 이유는 배열의 내용 전체를 이동할 경우보다 주소 값을 알려..

CS/자료구조 2021.09.20

[ 자료구조 ] 선택 정렬 이진 검색 배열

[자료구조] 선택 정렬 이진 검색 배열 알고리즘은 어떤 일을 하는 절차를 말한다. 컴퓨터. 분야의 문제 중에서 가장 방법이 많고 많이 쓰이는 알고리즘이 정렬(Sorting)이다. 정렬은 흩어져있는 데이터를 키 값(주민등록번호, 학번 등)을 이용하여 순서대로 열거하는 알고리즘이다. 선택 정렬은. 선택 정렬은 n개의 데이터를 놓고 가장 작은 수를 골라 정렬될 장소에 이동한다. -배열을 함수로 넘길 때는 포인터를 사용해 배열의 이름만 넘겨서 사용한다. -값을 하나씩 비교한다. - temp 매개변수를 사용해 값을 하나씩 교환한다. - 이중 for 문의 두번째 루프에서 값이 11 차이 나도록 설정한다. 이유 : 마지막 번째의 경우를 고려하기 전에 이미 오름차순 정렬이 되어있기 때문이다. 컴퓨터 분야의 문제 중에서..

CS/자료구조 2021.09.20
728x90