자료구조 31

[리스트]배열 리스트를 구연해보았습니다.(각 단계 해설 有) 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) 트리, 그래프 ④ 파일구조 : 보조 기억 장치에 저장되는 파일에 대한 자료 구조 ※ 일반적으로 자료 구조라 하면 "② 선형구조" 와 "③ ..

[데이터구조] 큐 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)); //동..

[데이터구조]스택 stack

1. 개요 ⓐ 삽입.삭제가 이뤄지는 곳은 맨 끝부분이다. ⓑ LIFO(Last in, First Out), 후입선출 2. 주요작업 > create, destory, push(삽입), pop(삭제or삭제하면서 top의 값을 리턴), gettop(맨위출력)... 3. 종류 ⓐ 배열 스택 ex ) #define Max 100 typedef struct{ int Top; int Stack[Max]; }stackType; void push(stackType *Sptr,int item){ Sptr -> stack[top++] = item; } void Init(stackType *sptr) // 스택 함수 초기화 , top의 값을 0으로 지정 ※Top 값의 초기값 ⓐ top의 초기 값이 -1 일때 : 현재까지 들어..

[c언어]리스트 추가 내용

1. 포인터 리스트의 delete 다른 페이지에서 설명한 position을 받아서 그 위치의 리스트를 없에는 것이 아니라, value를 받아서 그 값을 리스트에서 없에는 것을 알아보자. ex ) void delete(int item){ temp = Lptr -> head; while((temp!=NULL)&&(Temp->Data!=item)) // 삭제해야 될 위치 직전을 가르킨다.(핵심) temp = temp -> next; ....//포인터 리스트에서 리스트 삭제 부분과 동일 생략. } 2. 이중 연결리스트 노드가 자신 이전과 이후의 값을 가르킨다. 따라서, 중간에 노드를 추가하기 위해서는 temp를 2번 사용하여 연결을 시킬 수 있다. 3. 원형연결리스트 마지막 노드가 head노드를 가르켜 계속 회..