|자료구조| 1 | Double LinkedList_3 | 이중 연결 리스트

2022. 3. 13. 14:49·PS/자료구조
no title

양방향 연결 리스트 구현

Visual Studio 솔루션 구성


구현부

노드 - 헤더 : Node.h

#pragma once
class Node
{
	friend class D_List;
protected:
	int data;
	Node* next;
	Node* prev;
};

양방향 연결 리스트 - 헤더 : D_List.h

#pragma once
#include"Node.h"
class D_List
{
	friend class Node;
private:
	Node* mHead;
	Node* mTail;
	Node* mCur;
	int mLength = 0;

public:
	D_List();
	int length();
	void insert(int);
	int front();
	int back();
	void pop_front();
	void pop_back();
	void list_state();
};

양방향 연결 리스트 - 메소드 : D_List.cpp

#include "D_List.h"
#include "Node.h"
#include <iostream>
#include <algorithm>

using namespace std;

D_List::D_List() {
	mHead = NULL;
	mTail = NULL;
	mCur = NULL;
	mLength = 0;
}

int  D_List::length() {
	return mLength;
};
void D_List::insert(int _data) {
    //일단 데이터 넣기
	Node* newNode = new Node;
	newNode->data = _data;

	if (mHead == NULL) {
        //처음 생성한것이라면?
		mHead = newNode;
		mTail = newNode;
		mHead->prev = NULL;
		mTail->next = NULL;
	}
	else {  
        //리스트가 만들어져 있다면?
		mTail->next = newNode;
		newNode->prev = mTail;
		mTail= newNode;
		newNode->next = NULL;
	}
	mLength++;
};
int  D_List::front() {
	return mHead->data;
};
int  D_List::back() {
	return mTail->data;
};
void  D_List::pop_front() {
	mCur = mHead;
	if (mCur == NULL)
		throw "Empty List";
	if (mCur->next != NULL) {
        //우측에 리스트가 있다면..
		mCur->next->prev = NULL;
		mHead = mCur->next;
		delete mCur;
	}
	else {
        //지금 리스트에 단 하나의 값밖에 없으면..
		mHead = NULL;
		mTail = NULL;
		delete mCur;
	}

	mLength--;
};
void  D_List::pop_back() {
	mCur = mTail;
	if (mCur == NULL)
		throw "Empty List";
	if (mCur->prev != NULL) {
		mCur->prev->next = NULL;
		mTail = mCur->prev;
		delete mCur;
	}
	else {
		mHead = NULL;
		mTail = NULL;
		delete mCur;
	}

	mLength--;
};
void D_List::list_state() {
	return;
};

적용부

main.cpp

#include "Class.h"
#include "D_List.h"
#include <iostream>
#include <algorithm>
using namespace std;

void _Interface_(D_List *_list) {
	while (1) {
		cout << "1 : 삽입 " << "2 : 삭제 앞" << "3 : 삭제 뒤" << "4. 앞" << "5. 뒤" << '\n';
		int num; cin >> num;
		if (num == 1) {
			int inputNum; cin >> inputNum;
			_list->insert(inputNum);
			cout << _list->length() << '\n';
		}
		else if (num == 2) {

			cout << _list->front() << '\n';
			_list->pop_front();
			cout << _list->length() << '\n';
		}
		else if (num == 3) {

			cout << _list->back() << '\n';
			_list->pop_back();
			cout << _list->length() << '\n';
		}
		else if (num == 4) {
			cout << _list->front() << '\n';
		}
		else if (num == 5) {
			cout << _list->back() << '\n';
		}
	}
}

int main() {
	D_List doubleList;
	_Interface_(&doubleList);
}

//클래스 헤더파일을 사용하자
//클래스를 사용할 메인 부분이다
저작자표시 (새창열림)

'PS > 자료구조' 카테고리의 다른 글

|자료구조| 3 | BinSearchTree | 이진 탐색 트리  (0) 2022.03.13
| 니앙팽이 - 자료구조| 2 | 스택,큐 노트  (0) 2022.03.13
| 니앙팽이 - 자료구조| 1 | 연결 리스트 노트  (0) 2022.03.13
|자료구조| 1 | Circular LinkedList_2 | 원형 연결 리스트  (0) 2022.03.13
|자료구조| 1 | LinkedList_1 | 연결리스트(더미노드 없음)  (0) 2022.03.13
'PS/자료구조' 카테고리의 다른 글
  • | 니앙팽이 - 자료구조| 2 | 스택,큐 노트
  • | 니앙팽이 - 자료구조| 1 | 연결 리스트 노트
  • |자료구조| 1 | Circular LinkedList_2 | 원형 연결 리스트
  • |자료구조| 1 | LinkedList_1 | 연결리스트(더미노드 없음)
니앙팽이
니앙팽이
  • 니앙팽이
    니앙팽이 블로그
    니앙팽이
  • 전체
    오늘
    어제
    • 분류 전체보기 (126)
      • 그림그리기 (7)
      • 음악 (4)
        • FL Studio & MIDI (2)
        • 자작곡 (2)
      • 게임 (7)
        • 모바일 (0)
        • 스팀 (0)
        • 닌텐도 (0)
        • 개발 (7)
      • CS (44)
        • SW 공학 (27)
        • DB (7)
        • OS (9)
        • 네트워크 (1)
      • 팁 (9)
      • Language (21)
        • C# (8)
        • C&C++ (3)
        • 파이썬 메모 (3)
        • Javascript (7)
      • PS (0)
        • 알고리즘 (24)
        • 자료구조 (8)
        • 수학 (1)
        • 선형대수 (0)
        • 오토마타 (1)
        • 이산수학 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    디자인패턴
    클립 스튜디오
    Javascript
    객체지향개발
    유니티
    Stack
    노마드 코더
    c#
    unity
    따라그리기
    가비지 콜렉터
    연결리스트
    프로그래머스
    KAKAO
    그림 연습
    프로세스
    파이썬
    알고리즘
    clip studio paint
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
니앙팽이
|자료구조| 1 | Double LinkedList_3 | 이중 연결 리스트
상단으로

티스토리툴바