#pragma once
#ifndef ___LinkedList
#define ___LinkedList
//LinkedList.h : 단순 연결 리스트 클래스
#include "Node_Int.h"
class LinkedList {
Node org; //헤드 노드(헤드 포인터가 아님)
public:
LinkedList(): org(0) {} //생성자
~LinkedList() { clear(); } //소멸자
void clear() { while (!isEmpty()) delete remove(0); }
Node* getHead() { return org.getLink(); }
bool isEmpty() { return getHead() == NULL; }
//pos번째 항목을 반환함
Node* getEntry(int pos) {
Node* n = &org;
for (int i = -1; i < pos; i++, n = n->getLink())
if (n == NULL) break;
return n;
}
//리스트의 어떤 위치에 항목 삽입
void insert(int pos, Node *n) {
Node* prev = getEntry(pos - 1);
if (prev != NULL)
prev->insertNext(n);
}
//리스트의 어떤 위치의 항목 삭제
Node* remove(int pos) {
Node* prev = getEntry(pos - 1);
return prev->removeNext();
}
//탐색 함수
Node* find(int val) {
for (Node* p = getHead(); p != NULL; p = p->getLink())
if (p->hasData(val)) return p;
return NULL;
}
//리스트의 어떤 위치에 항목 삽입
void replace(int pos, Node* n) {
Node* prev = getEntry(pos - 1);
if (prev != NULL) {
delete prev->removeNext();
prev->insertNext(n);
}
}
//리스트 항목 개수를 반환
int size() {
int count = 0;
for (Node* p = getHead(); p != NULL; p = p->getLink())
count++;
return count;
}
//화면에 보기 좋게 출력
void display() {
printf("[전체 항목 수 = %2d] : ", size());
for (Node* p = getHead(); p != NULL; p = p->getLink())
p->display();
printf("\n");
}
};
#endif // !___LinkedList
'Programming > DS SorceCode' 카테고리의 다른 글
DblinkedList.h : 이중 연결 리스트 클래스 (0) | 2019.03.24 |
---|---|
Node2.h : 이중연결리스트 노드를 나타내기 위한 클래스 (0) | 2019.03.24 |
Node_Int : 연결된 큐를 위한 int형 클래스 + 연결 리스트로 구현된 리스트를 위한 노드 클래스 (0) | 2019.03.23 |
ArrayList.h : 배열을 이용한 리스트 클래스 구현 (0) | 2019.03.23 |
StudentQueue.h : 학생정보 큐 클래스 (0) | 2019.03.23 |