양방향 체인 시계의 몇 가지 실현
2879 단어 양방향 체인 테이블
#pragma once
#include<iostream>
using namespace std;
typedef int DataType;
//
struct Node
{
Node(const DataType& d)
:_data(d)
, _prev(NULL)
, _next(NULL)
{}
Node* _next;
Node* _prev;
DataType _data;
};
//
class DList
{
friend ostream& operator<<(ostream& os,DList& d);
public:
DList()//
:_head(NULL)
,_tail(NULL)
{}
~DList()//
{
Node* cur = _head;
while (cur)
{
Node* del = cur;
cur = cur->_next;
delete del;
}
}
public:
void PushBack(const DataType& d);//
void PushFront(const DataType& d);//
void PopBack();//
void PopFront();//
void Find(const DataType& d);//
void Insert(const DataType& d);//
void BubbSort();//
void Reverse();//
void Remove(const DataType& d);//
void RemoveAll(const DataType& d);//
void Erase(Node* pos);//
private:
Node* _head;//
Node* _tail;//
};
#include"DList.h"
ostream &operator<<(ostream &os, Dlist&d)//출력 연산자 다시 로드
{
Node*cur = d._head;
while (cur)
{
os << cur->_data <<"<=>";
cur = cur->_next;
}
os <<"over";
return os;
}
void DList::PushBack(const DataType& d)
{
Node* newNode = new Node(d);
if (_head == NULL)
{
_head = newNode;
_tail = _head;
}
else
{
_tail->_next = newNode;
newNode->_prev = _tail;
_tail = newNode;
}
}
void DList::PushFront(const DataType& d)
{
Node* newNode = new Node(d);
if (_head == NULL)
{
_head = newNode;
_tail = _head;
}
else
{
newNode->_next = _head;
_head->_prev = newNode;
_head = newNode;
}
}
void DList::PopBack()
{
if (_head == NULL)
{
return;
}
else if (_head == _tail)
{
delete _head;
_head = NULL;
_tail = NULL;
}
else
{
_tail = _tail->_prev;
delete _tail->_next;
_tail->_next = NULL;
}
}
void DList::PopFront()
{
if (_head = NULL)
{
return;
}
else if (_head == _tail)
{
delete _head;
_head = NULL;
_tail = NULL;
return;
}
else
{
Node* del = _head;
_head = _head->_next;
_head->_prev = NULL;
delete del;
}
}
#include"DList.h"
void test1()
{
DList l1;
l1.PushBack(1);
l1.PushBack(2);
l1.PushBack(3);
l1.PushBack(4);
cout << l1 << endl;
l1.PopBack();
l1.PopBack();
cout << l1 << endl;
l1.PopBack();
l1.PopBack();
l1.PopBack();
cout << l1 << endl;
}
int main()
{
test1();
getchar();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(검지 Offer) 면접 문제 27: 두 갈래 검색 트리와 양방향 체인 테이블두 갈래 검색 트리를 입력하여 이 두 갈래 검색 트리를 정렬된 양방향 체인 테이블로 변환합니다.새 결점은 만들 수 없으며 트리의 결점 포인터 방향만 조정해야 합니다. 두 갈래 나무의 정의는 다음과 같다. 두 갈래 나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.