본문 바로가기

old_Coding/C/C++

[C++/자료구조] Simple Linked List 작성





단순연결리스트라고 불리우는 자료형을 클래스로 작성해봤습니다.

선언부만 옮겨서 객체사용법만 설명드리고

자세한건 직접 다운받아 돌려보세요~

작성된 환경은 비쥬얼스튜디오 2008입니다.


자 그럼 "list.h" 헤더파일을 옮겼습니다.

typedef struct node {
 int Data ;
 struct node* Next ;
} Node ;       // 노드 구조체 정의


인트형의 데이터와 구조체로 정의되어 있는
노드를 가르키는 포인터변수 Next가 정의되어있습니다.
정수형변수 한개와 어떤 노드를 지정할 포인터변수 한개가
구조체로 묶여있네요.

typedef Node* Nptr ;    // 노드 포인터타입 정의
그리고 위의 구조체를 가르키는 포인터를 앞으로
Nptr이라고 하겠습니다. 소스코드에 별(*)이 덕지덕지 붙으면
유관상 그리고 정신건강에 해로우니까요~


class List_Class {
public:
 List_Class() ;       // 생성자
 ~List_Class() ;       // 소멸자
 void Insert_List(int Position, int Data) ;  // 원하는 위치에 데이터삽입
 void Delete_List(int Position) ;    // 원하는 위치 삭제
 void Output_List() ;    // 현제 데이터 모두 출력
 void Search_List(int Data) ;   // 원하는 데이터 검색
 bool IsEmpty_List() ;      // 비어있는지 확인
 int Length_List() ;       // 리스트 내의 개수
 void Set_Count(int Data) ;
 void Set_Head(Nptr ptr) ;
 int Get_Count() ;
 Nptr Get_Head() ;

private:
 int Count ;       // 카운터
 Nptr Head ;       // 해드포인터

} ;   // 클래스 선언


생성자에서는 private에 있는 Count(노드의 갯수를 저장할겁니다) 변수와
Head(노드의 가장 앞부분을 잡고있을 포인터) 변수를 초기화 시켜줬습니다.

소멸자는 디폴트로 해줬구요.

Insert_List에서 포지션과 데이터를 받아서 사용하는데요
포지션은 노드의 위치고 데이터는 말그대로 입력값이겠죠

Delete_List는 포지션값을 넣어서 그 포지션의 노드를 삭제해주는겁니다.

Output_List는 말그대로 Head포인터에서부터 쭈욱 찍어 출력해주는 함수죠.

Search_List 는 어떤 데이터값이 있는지 없는지 확인하는 겁니다.
실제 함수안으로 들어가면 처음부터 끝까지 쭉 이동하면서 데이터값과 비교하게 됩니다.




주석처리 된 부분 읽어보시기만해도 이해가 가실껍니다.
뒷부분은 list.cpp파일만 열어보셔도 금새 이해하실테니까..
따로 설명 안넣겠습니다.
혹여나 필자의 부족한 실력탓에 스파게티소스처럼 보이시면
댓글남겨주시면 친절한 답변 해드립죠




ps.
많은 분들이 그냥 긁어가시는 분들이 많은데..
긁어가시는건 자유지만.. 그러면 실력이 잘 안늘더라구요..
실행파일 소스파일 헤더파일 포함했습니다
혹여 이해안가시면 댓글달아주세용