반응형

언어 자료구조 알고리즘/C언어 예제 104

[C언어 소스] 순차 정렬(Sequential Sort) 알고리즘

순차 정렬(Sequential Sort) 알고리즘 이번에는 반복적인 방법으로 해결하는 순차 정렬(Sequential Sort) 알고리즘을 살펴볼게요. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 알고리즘을 말해요. 정렬 알고리즘은 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘이 필요합니다. 그리고 수행 후에는 배열 내의 자료들은 원하는 순서로 배치한 상태여야 합니다. 순차 정렬은 맨 앞에서부터 제일 작은 원소를 배치하게 만들어 나가는 알고리즘이예요. 이를 위해 배치할 자리에 있는 원소를 뒤쪽에 있는 원소들과 비교하면서 작은 것을 발견하면 배치할 위치의 원소와 교환해요.순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 반복(i:=..

이진 탐색 트리 운행, C언어 소스

이진 탐색 트리 운행, C언어 소스 //이진 탐색 트리 운행#include #include typedef struct Node//노드 정의{ int data; struct Node *lchild; struct Node *rchild;}Node; typedef Node *Tree;//트리 형식명 정의 Node *NewNode(int data);//노드 생성void InitTree(Tree *bst);//트리 초기화int AddData(Tree *bst, int data); //데이터 보관void Preorder(Node *sr);//전위 순위 운행void Inorder(Node *sr);//중위 순위 운행void Postorder(Node *sr);//후위 순위 운행void ClearTree(Tree *b..

이중 연결리스트 - 정렬 상태로 보관, C언어 소스

이중 연결리스트 - 정렬 상태로 보관, C언어 소스 //이중 연결리스트 - 정렬 상태로 보관//연결리스트 정의, 노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제#include #include typedef struct Node//노드 정의{ int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보) struct Node *prev;//링크(이전 노드의 위치 정보)}Node; Node *NewNode(int data){ Node *now = (Node *)malloc(sizeof(Node)); now->data = data; now->prev = now->next = NULL; return now;} typedef struct List//연결리스트 정의{ No..

이중 연결리스트 - 동적 생성한 데이터 보관, C언어 소스

이중 연결리스트 - 동적 생성한 데이터 보관, C언어 소스 //이중 연결리스트 - 동적 생성한 데이터 보관 //연결리스트 정의, 노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제 #include #include #include typedef void * Element; typedef struct Node//노드 정의 { Element data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보) struct Node *prev;//링크(이전 노드의 위치 정보) }Node; Node *NewNode(Element data)//노드 생성 { Node *now = (Node *)malloc(sizeof(Node)); now->data = data; now->prev = now..

이중 연결리스트 - 더미 노드 사용, C언어 소스

이중 연결리스트 - 더미 노드 사용, C언어 소스 //이중 연결리스트 - 더미 노드 사용, 순차 보관(가장 최근에 보관한 데이터가 맨 뒤)//연결리스트 정의, 노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제#include #include typedef struct Node//노드 정의{ int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보) struct Node *prev;//링크(이전 노드의 위치 정보)}Node; Node *NewNode(int data){ Node *now = (Node *)malloc(sizeof(Node)); now->data = data; now->prev = now->next = NULL; return now;} typedef..

이중 연결리스트 - 순차 보관, C언어 소스

이중 연결리스트 - 순차 보관, C언어 소스 //이중 연결리스트 - 순차 보관(가장 최근에 보관한 데이터가 맨 뒤) //노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제 #include #include typedef struct Node//노드 정의 { int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보) struct Node *prev;//링크(이전 노드의 위치 정보) }Node; void InitList(Node **phead, Node **ptail);//초기화 void AddData(Node **phead, Node **ptail, int data);//데이터 추가 void Remove(Node **phead, Node **ptail, Node *..

이중 연결리스트 - 역순 보관(가장 최근에 보관한 데이터가 맨 앞), C언어 소스

이중 연결리스트 - 역순 보관(가장 최근에 보관한 데이터가 맨 앞), C언어 소스 //이중 연결리스트 - 역순 보관(가장 최근에 보관한 데이터가 맨 앞)//노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제#include #include typedef struct Node//노드 정의{ int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보) struct Node *prev;//링크(이전 노드의 위치 정보)}Node; void InitList(Node **phead);//초기화void AddData(Node **phead, int data);//데이터 추가void Remove(Node **phead, Node *now);//노드 삭제Node *Find(Node..

원형 연결리스트 - 단일 연결리스트, 순차 보관, C언어 소스

원형 연결리스트 - 단일 연결리스트, 순차 보관, C언어 소스 //원형 연결리스트 - 단일 연결리스트, 순차 보관//노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제#include #include typedef struct Node//노드 정의{ int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보)}Node; void InitList(Node **phead, Node **ptail);//초기화void AddData(Node **phead, Node **tail, int data);//데이터 추가void Remove(Node **phead, Node **ptail, Node *now);//노드 삭제Node *Find(Node *seek, int data);..

단일 연결리스트 - 역순 보관(가장 최근에 보관한 데이터가 맨 앞), C언어 소스

단일 연결리스트 - 역순 보관(가장 최근에 보관한 데이터가 맨 앞), C언어 소스 //단일 연결리스트 - 역순 보관(가장 최근에 보관한 데이터가 맨 앞)//노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제#include #include typedef struct Node//노드 정의{ int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보)}Node; void InitList(Node **phead);//초기화void AddData(Node **phead, int data);//데이터 추가void Remove(Node **phead, Node *now);//노드 삭제Node *Find(Node *seek, int data);//노드 검색void ViewAll..

비제네르 암호(Vigenere Chipher), C언어 소스

비제네르 암호(Vigenere Chipher), C언어 소스 비제네르 암호는 시저 암호를 확장한 개념의 암호화 방식입니다. 시저 암호는 평문의 모든 문자를 같은 간격의 밀기 방식으로 치환하여 사용합니다. 반면 비제네르 암호는 평문의 문자들은 위치에 따라 다른 간격의 밀기 방식으로 치환하여 사용합니다. 그리고 이 때 어떠한 간격으로 밀기를 할 것인지를 약속한 키를 이용합니다. 예를 들어 약속한 키가 "abc"라고 하면 1, 4, 7, ... 번째 문자들은 ('a'-'a')칸 밀기합니다. 0칸 밀기이므로 아무런 변화가 없겠죠. 2, 5, 8, ... 번째 문자들은 ('b'-'a')칸 밀기합니다. 1칸 밀기하는 것입니다. 그리고 3, 6, 9, ... 번째 문자들은 ('c' - 'a')칸 밀기합니다. 2칸 밀..

반응형