반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- SKT
- 패캠챌린지
- 직장인인강
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- albert
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- R
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 알버트
- 패스트캠퍼스후기
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- AI
- 패스트캠퍼스
- 직장인자기계발
Archives
- Today
- Total
제주 탈출 일지
선형리스트(arrList) 본문
728x90
반응형
C++의 템플릿을 이용해서 선형 리스트를 나름대로 구현해 보았다.
야매로 짠 코드라 따로 파일을 분할하여 짜지는 않았고, 윤성우 저자의 자료구조를 참고하여 작성했기 때문에 무조건 참조 후 삭제를 해야한다.(왜 이래야 하는지 사실 이해가 안된다..) 혹시혹시 참고한다면 분할하여 삭제부분을 좀 퀄리티 있게 짜보는 것을 추천한다.
#include <iostream>
using namespace std;
#define SIZE 100
template
<typename T>
class List
{
private:
T arr[SIZE];
int numOfData;
int curPosition;
public:
bool LInsert(const T data) //데이터 저장
{
if (numOfData > SIZE)
{
cout << "현재 리스트가 꽉 차 있습니다." << endl;
return false;
}
else {
arr[numOfData] = data;
cout << numOfData++ << " 위치에 " << data << "가 저장되었습니다." << endl;
return true;
}
}
List() //생성자
{
numOfData = 0;
curPosition = -1;
}
bool LFirst(T& LData)
{
if (numOfData == 0)
{
return false;
}
curPosition = 0;
LData = arr[curPosition];
return true;
}
bool LNext(T& LData) //첫번쨰 데이터 이후 데이터 참조
{
if (++curPosition >= numOfData - 1)
{
return false;
}
LData = arr[curPosition];
return true;
}
T LRemove() //데이터 삭제, 두번 연속 호출 불가.
{
T rpos = curPosition;
cout << curPosition << "이 현재 위치 입니다. " << endl;
int num = numOfData;
T rdata = arr[curPosition];
for (int i = rpos; i < num - 1; i++)
{
arr[i] = arr[i + 1];
}
numOfData--;
curPosition--;
return rdata;
}
void LPrint()
{
for (int i = 0; i < numOfData; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
T LCount()
{
return numOfData;
}
};
int main()
{
List<int> ArrList;
/*List<int>* arrList = new List<int>;*/
ArrList.LInsert(5);
ArrList.LInsert(3);
ArrList.LInsert(4);
ArrList.LInsert(1);
ArrList.LInsert(2);
ArrList.LPrint();
int a;
cout << ArrList.LFirst(a) << endl;
/*int a = ArrList.LRemove();*/
cout << ArrList.LNext(a) << endl;
cout << ArrList.LNext(a) << endl;
cout << ArrList.LRemove() << endl;
cout << ArrList.LRemove() << endl;
ArrList.LPrint();
return 0;
}
728x90
반응형
'자료구조' 카테고리의 다른 글
원형 연결리스트(CLinkedList) - C++ (0) | 2020.09.02 |
---|---|
연결 리스트(LinkedList) - C++ (0) | 2020.09.01 |