ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 연결 리스트 (Linked List)
    언어/C, C++ 2020. 12. 31. 20:02
    #pragma once
    
    #include <iostream>
    using namespace std;
    
    struct Node
    {
    	int data;
    	Node* next;
    };
    
    
    class LinkedList
    {
    private:
    	int m_count;
    	Node* m_head;
    
    public:
    	LinkedList();
    	~LinkedList();
    
    	void Insert(int _position, int _item);
    	void Delete(int _position);
    	int Retrieve(int _position);
    
    	bool IsEmpty();
    	int GetLength();
    
    };
    
    

    LinkedList.h

     

     

     

     

     

    #include "LinkedList.h"
    
    LinkedList::LinkedList() : m_count(0), m_head(nullptr)
    {
    
    }
    
    LinkedList::~LinkedList()
    {
    
    }
    
    void LinkedList::Insert(int _position, int _item)
    {
    	Node* currentNode = m_head;
    	Node* insertNode;
    
    	insertNode = new Node;
    	insertNode->data = _item;
    
    	if (_position == 0 || m_head == nullptr)
    	{
    		insertNode->next = m_head;
    		m_head = insertNode;
    		m_count++;
    
    		return;
    	}
    
    	for (int i = 0; i < _position - 1; i++)
    		currentNode = currentNode->next;
    
    	insertNode->next = currentNode->next;
    	currentNode->next = insertNode;
    	m_count++;
    
    }
    
    void LinkedList::Delete(int _position)
    {
    	Node* currentNode = m_head;
    	Node* deleteNode;
    
    	if (_position == 0)
    	{
    		deleteNode = m_head;
    		m_head = m_head->next;
    		delete deleteNode;
    		m_count--;
    
    		return;
    	}
    
    	for (int i = 0; i < _position - 1; i++)
    		currentNode = currentNode->next;
    
    	deleteNode = currentNode->next;
    	currentNode->next = deleteNode->next;
    	delete deleteNode;
    	m_count--;
    
    }
    
    int LinkedList::Retrieve(int _position)
    {
    	Node* temp = m_head;
    
    	for (int i = 0; i < _position; i++)
    		temp = temp->next;
    
    	return temp->data;
    
    }
    
    bool LinkedList::IsEmpty()
    {
    
    	return m_count == 0;
    
    }
    
    int LinkedList::GetLength()
    {
    
    	return m_count;
    
    }
    

    LinkedList.cpp

    '언어 > C, C++' 카테고리의 다른 글

    연결 리스트 스택 (Linked List Stack)  (0) 2021.01.13
    배열 스택 (Array Stack)  (0) 2021.01.12
    이중 연결 리스트 (DoubleLinkedList)  (0) 2021.01.05
    배열 리스트 (Array List)  (0) 2020.12.29
    로또(Lotto) 프로그램  (0) 2020.08.20

    댓글