vidigummy KAU/재활운동

재활운동 1(c++ 싱글 체인 리스트)

vidi 2020. 6. 1. 21:51

  재활운동을 시작했다.

  재활운동을 시작함에 있어서 제일 중요한 것은 문법도 문법이긴 한데 일단 그것보다 중요한 것은 앞으로 공부를 해 나감에 있어서 가장 기본적인 자료구조에 대한 개념과 이를 구현하는 방법을 다시 살펴보는 것이 중요하다고 생각했다. 앞으로 알고리즘 문제를 열심히 풀어나갈텐데, 이러한 개념이 바탕 되지 않는다면 제대로 아는 것 없이 끄적이는거나 다름없으니까 말이다.

  첫번째 자료구조는 싱글 체인 리스트였다. 솔직히 입대 전이라고 하면 구현함에 있어서 타이핑하는 시간만 필요한 매우 간단한 자료구조였을텐데, 예상치 못한 오류를 많이 만나 3시간 이상이 걸려버렸다. 이래서 재활운동이라고 하는가 보다.

  정말 간단하다. 4가지 숫자를 입력받으면 그게 몇가지 숫자인지 출력하고 입력받은 숫자를 입력하는 리스트. 설명할 것도 없다.

#include <iostream>

using namespace std;

//싱글 체인 리스트

class Node
{
	friend class Chain;

	private: 
		int data;
		Node* link;
	public:
		Node(int value = NULL, Node *next = NULL);
		void Show();
};

class Chain
{
	private:
		Node *first, *last, *cur;
		int len;
	public:
		Chain();
		void MakeNode(int value);
		void ShowAll();
};

Chain::Chain()
{
	first = NULL;
	last = NULL;
	cur = NULL;
	len = 0;
}

Node::Node(int value, Node *next)
{
	data = value;
	link = next;
}

void Node::Show()
{
	cout << this->data << "\n";
}

void Chain::MakeNode(int value)
{
	if (value == NULL)
	{
		cout << "value error.\n";
	}
	if (this->first == NULL)
	{
		first = new Node(value, NULL);
		cur = first;
	}
	else
	{
		last = new Node(value, NULL);
		cur->link = last;
		cur = last;
	}
	this->len += 1;
}

void Chain::ShowAll()
{
	cout << "\nLength of Chain List is\n" <<len << "\n";
	cur = first;
	do
	{	
		cur->Show();
		cur = cur->link;
	}while (cur != NULL);
	cout << "\n";
}

int main()
{
	Chain n1 = Chain();
	for (int i = 0; i < 4; i++)
	{
		int tmp;
		cin >> tmp;
		n1.MakeNode(tmp);
	}
	n1.ShowAll();
	return 0;
}