프로그래밍[Univ]/데이터구조 36

[리스트]원형리스트 / 순환 리스트 구현 +a 해더노드vs해더포인터 5/25

#include #include #include typedef struct nodetype{ // 연결리스트 node를 만듭니다 int data; struct nodetype *next_ptr; // node(노드)는 자료 + 연결 이라고했죠? // data라는 자료와 다음 노드를 연결하는 포인터 next_ptr로 구성했습니다 }node; typedef struct listtype{ // 리스트의 형태를 구성합니다. int count; node headnode; // 해더 노드를 사용했습니다. }list; list *makelist(){ // 리스트를 생성하는 함수입니다. list *returnlist; returnlist = (list *)malloc(sizeof(list)); if ( returnli..

[리스트]연결리스트(링크드리스트) 각 단계별 해설 有 구현 5/24

#include #include #include typedef struct nodetype{ // 연결리스트 node를 만듭니다 int data; struct nodetype *next_ptr; // node(노드)는 자료 + 연결 이라고했죠? // data라는 자료와 다음 노드를 연결하는 포인터 next_ptr로 구성했습니다 }node; typedef struct listtype{ // 리스트의 형태를 구성합니다. int count; node headnode; // 해더 노드를 사용했습니다. }list; list *makelist(){ // 리스트를 생성하는 함수입니다. list *returnlist; returnlist = (list *)malloc(sizeof(list)); if ( returnli..

[리스트]링크드리스트 (연결리스트) 5/23

연결리스트에 대해서 알아보자... 일단 연결리스트는 노드들로 구성되어있는 자료구조이다. 여기서 노드라하면 저장할 자료와 다음 노드를 가르키는 포인터를 가지고 있는 것을 말한다, 즉, "노드 = 자료 + 링크"라 할 수 있다. 이제 본격적으로 링크드 리스트의 종류에 대해서 알아보자... 1. 단순 연결리스트 말 그대로 단순한 연결리스트이다-_-; 선형구조를 이루고 있다. 2. 원형 연결리스트 리스트의 마지막 노드가 리스트의 첫번째 노드를 연결하는(가르키는) 자료구조이다. 3. 이중 연결리스트 노드들이 양방향으로 연결되어 있는 연결리스트를 말한다. 특정 노드 기준으로 이전 노드에 접근하기 쉬운 장점이 있다.(접근의 편의성!!) 이에 비해, 메모리 공간을 더 사용해야 하는 단점이 있다. ... 간단하게 연결리..

[리스트]배열 리스트를 구연해보았습니다.(각 단계 해설 有) 5/23

#include #include #include typedef struct nodetype{ // 저장할 데이터 자료형을 구조체로 묶습니다. int data; // 간단한 프로그램 작성을 위해 정수 데이터 하나만 넣었습니다. }node; typedef struct nodelist{ // List의 형태를 구조체로 묶습니다. node *ptr_node; // ptr_node는 데이터 자료형을 사용자가 원하는 크기의 배열로 만들어지게 point로 작성했습니다. int max; // max는 List에서 최대로 저장할수 있는 자료의 양을 나타냅니다. int count; // count는 List에 저장된 자료의 양을 나타냅니다. }Alist; Alist *makelist(int max){ // List를 생성..

[리스트]리스트 5/20

~프로로그~ 리스트에 대해서 알아보자~! 현재 필자는 리스트의 개념이 확실하다고 생각하나 어째 코딩이 안된다. 미칠듯하다. 리눅스환경에서 코딩하다가 visual c++이용하려니깐 복잡해서 안된다. vmware로 리눅스롤 설치하던지.... 므튼... 리스트 코드는 다음에 하기로하고 일단!! 리스트의 개념에 대해서 알아보자! ---------------------------------------------------------------------------- 1. 리스트 자료를 순서대로 저장하는 자료구조를 말한다. 선형구조를 이룬다! - 리스트의 기능(추상자료형으로 나타내고 싶었으나... 귀차니즘이...;;) ⓐ 리스트 생성 - 최대 Max를 가지는 공백 리스트를 구성해준다. ⓑ 리스트 삭제 - 리스트를 ..

데이터 구조를 들어가기전에... 5/18

~프로로그~ 혹시나해서 건너뛰려고 했던 부분을 보았다. 역시나가 2년이란 시간은 기억을 지우기 시작했었다. 보길 잘했다. 다른곳에 정확히 써있어 간략하게나마 데이터 구조에 들어가기전에 주의 해야 할 점에 대해서 적어보려고한다. ---------------------------------------------------------------------------------------------------- 1. 배열 같은 자료형의 데이터를 메모리상에 연속적으로 저장하는 자료형 - 문법 Type Name[SIZE]; ex) int A[2]; // A의 이름을 가진 int자료형이 2개 연속됨. Index가 0 부터 시작 되는 것에 주의 하자!! 초기화가 되지 않아 쓰레기 값이 들어 있다는 의미로 "?"로나타냄..

자료구조와 알고리즘 (추상자료형) / 5월 16일

1. 자료구조 컴퓨터에 자룔르 효율적으로 저장하는 방식 - 자료구조를 설계하는 이유 ① 실행 시간 효율 증대 = 프로그램 수행 시간 최소화 ② 저장공간의 최소화 = 메모리 절약 - 자료구조 설계에 필요한 것 ① 프로그램의 개발 목적 - 자료구조의 종류 ① 단순구조 : 기본적인 데이터 타입(Type) ex) 정수(int), 실수(float), 문자/문자열(char) ② 선형구조 : 각각의 자료들 사이의 전후 관계가 1:1인 것 ex) 리스트, 스택, 큐, 덱 ③ 비선형구조: 각각의 자료들 사이의 전후 관계가 1:多(1 이상)로 망구조 혹은 계층 구조를 이루는 것 ex) 트리, 그래프 ④ 파일구조 : 보조 기억 장치에 저장되는 파일에 대한 자료 구조 ※ 일반적으로 자료 구조라 하면 "② 선형구조" 와 "③ ..

[데이터 구조]알고리즘

1. 알고리즘 : 주어진 문제를 해결하기 위한 방법. 절차 : 적절한 수준으로 기술 ( 너무 자세히 X, 추상적 X ) : 정확성이 중요! > 인류의 존망을 논할 수도 있다. 2. 오류 1) Syntax Error //문법적 오류 2) Semantic Error //논리 오류 3) Algrithmic Error //문제 푸는 형식의 오류 3. 효율성 1) 여러곳에서 사용이 가능해야된다. 2) 점근적 복잡도 : 실제 환경과 무관하게 개략적으로 분석 : 입력데이터의 수 : N개 : 실행에 걸리는 시간을 N의 함수로 표시 >>입력값(N)이 클 때 빠른 것이 더욱 효율적이다. >>따라서, N의 값을 충분히 크게해야된다. 3) 복잡도 : 총 실행시간 : 식으로 나타냈을 대 차수가 낮은 것이 효율적이다. 4) 빅오..

[데이터구조] 큐 queue

1. 큐 1) 큐의 모델 : 기다리는 줄. 대기라인 2) 가장먼저 넣은 것이 가장 먼저 나온다.(FIFO : First in First out) 3) 삽입 : 리스트의 맨 끝 / 삭제: 리스트의 맨 앞 >> 양쪽 끝이 모두 사용된다. 4) 작업 : Add(큐 추가), Remove(큐 삭제), init_que(큐 초기화)... 5) 큐 작업시 필요한 포인터 : Front ( 큐의 맨 앞을 가르킨다.) Rear ( 큐의 맨 뒤를 가르킨다.) ex) Add typedef struct node{ int id; struct node *next }Node; Node *front, *rear; int count = 0; void Add(int n){ Node *new = malloc(sizeof(Node)); //동..