[C++] Linked List 예제
2013. 11. 20. 09:56ㆍCoders
자료구조의 기본인 Linked List 예제 입니다.
뭐 좀 하느라 ( 주된 일은 링크드리스트가 아닙니다만 ) 작성해 보았습니다.
닷넷에서는 포인터가 없어서, 왠지 링크드리스트는 C++로 구현하는 게 맞을 것 같아 굳이 이런 짓을 해 봅니다.
새롭네요.(VS2010에서도 C++ 이 가능하다는 것도 처음 알았어요. ^^)
데이터는 실수(double) 입니다. header, cpp 소스 입니다.
LinkedList.h
#pragma once class CLinkedList { private: typedef struct tagNode { double data; struct tagNode *next; } NODE; NODE *head, *tail; public: CLinkedList(void); ~CLinkedList(void); //노드 추가 void Add(double n); //노드 삭제 void Remove(double n); //모든 노드 삭제 void RemoveAll(); //전체 카운트 int Count(); //특정 노드 카운트 int Count(double n); //모든 노드 출력 void PrintAllList(); };
LinkedList.cpp
#include "StdAfx.h" #include "LinkedList.h" CLinkedList::CLinkedList(void) { head = NULL; tail = NULL; } CLinkedList::~CLinkedList(void) { RemoveAll(); } void CLinkedList::Add(double n) { NODE *temp = (NODE *)malloc(sizeof(NODE)); temp->data = n; temp->next = NULL; if ( head == NULL ) { head = temp; tail = temp; } else { tail->next = temp; tail = temp; } } void CLinkedList::Remove(double n) { if ( head == NULL ) return; NODE *temp = head; NODE* node; while ( temp != NULL ) { if ( temp->data == n ) { if ( temp == head ) { head = temp->next; delete temp; } else { node->next = temp->next; delete temp; } Remove(n); break; } node = temp; temp = temp->next; } } void CLinkedList::RemoveAll() { NODE *temp = head; while ( temp != NULL ) { NODE *node = temp; temp = temp->next; free(node); node = NULL; } head = NULL; tail = NULL; } int CLinkedList::Count() { int count = 0; NODE *temp = head; while ( temp != NULL ) { count++; } return count; } int CLinkedList::Count(double n) { int count = 0; NODE *temp = head; while ( temp != NULL ) { if ( temp->data == n ) count++; temp = temp->next; } return count; } void CLinkedList::PrintAllList() { NODE *temp = head; printf("head -> "); while ( temp != NULL ) { printf("%g -> ", temp->data); temp = temp->next; } printf("tail\n"); }
'Coders' 카테고리의 다른 글
[MSSQL] CHARINDEX를 이용한 문자열 SPLIT (0) | 2013.12.03 |
---|---|
[C#] Get 방식으로 웹 페이지 읽기. (0) | 2013.11.19 |
Syntaxhighlighting 버그 수정. (0) | 2013.11.19 |