trannhutien.hiep
New member
#deque, #C ++, #Datstavy, #Queue, #Stack ** deque trong C ++ **
Một deque (hàng đợi kết thúc kép) là một cấu trúc dữ liệu tuyến tính cho phép các phần tử được chèn và xóa ở cả mặt trước và mặt sau.Đó là một khái quát của cả một ngăn xếp và hàng đợi.Deques thường được sử dụng trong các ứng dụng trong đó các yếu tố cần được chèn hoặc xóa ở giữa một chuỗi, chẳng hạn như trong trình chỉnh sửa video thời gian thực hoặc trình chỉnh sửa văn bản.
## Thực hiện Deque trong C ++
Mã sau đây cho thấy cách thực hiện Deque trong C ++ bằng danh sách được liên kết:
`` `C ++
#include <Istream>
#include <Bart>
sử dụng không gian tên STD;
// Mẫu lớp Deque
Mẫu <Typename T>
lớp deque {
công cộng:
// Người xây dựng
Deque () {}
// Destructor
~ Deque () {
while (! trống ()) {
pop_front ();
}
}
// kiểm tra xem deque có trống không
bool trống () const {
trả về phía trước == nullptr;
}
// Nhận số lượng các yếu tố trong deque
int size () const {
return (int) (mặt sau - phía trước);
}
// Nhận phần tử phía trước của deque
T & front () {
Trả về dữ liệu phía trước-> dữ liệu;
}
// Nhận phần tử trở lại của deque
T & back () {
trả lại lại-> dữ liệu;
}
// Chèn một phần tử ở phía trước của deque
void push_front (const t & data) {
Nút* new_node = node node (dữ liệu);
new_node-> next = front;
phía trước = new_node;
}
// Chèn một phần tử ở phía sau của deque
void push_back (const t & data) {
Nút* new_node = node node (dữ liệu);
new_node-> prev = trở lại;
trở lại = new_node;
}
// Tháo phần tử phía trước của deque
void pop_front () {
if (trống ()) {
Ném "Deque trống";
}
Nút* old_front = mặt trước;
phía trước = front-> tiếp theo;
xóa old_front;
}
// Tháo phần tử phía sau của deque
void pop_back () {
if (trống ()) {
Ném "Deque trống";
}
Nút* old_back = trở lại;
trở lại = Back-> prev;
Xóa Old_back;
}
riêng tư:
// một nút trong deque
Nút cấu trúc {
T dữ liệu;
Nút* tiếp theo;
Nút* trước;
Nút (const t & data): dữ liệu (dữ liệu), next (nullptr), prev (nullptr) {}
};
// Con trỏ phía trước và phía sau của deque
Nút* front = nullptr;
Nút* trở lại = nullptr;
};
int main () {
// Tạo một deque của các số nguyên
Deque <tt> deque;
// chèn một số yếu tố vào deque
deque.push_front (1);
deque.push_front (2);
deque.push_back (3);
deque.push_back (4);
// In các yếu tố của deque
for (int i = 0; i <deque.size (); i ++) {
cout << deque.at (i) << endl;
}
// Tháo các yếu tố phía trước và phía sau của deque
deque.pop_front ();
deque.pop_back ();
// In lại các yếu tố của deque một lần nữa
for (int i = 0; i <deque.size (); i ++) {
=======================================
#deque, #C++, #datastructure, #Queue, #Stack **Deque in C++**
A deque (double-ended queue) is a linear data structure that allows elements to be inserted and deleted at both the front and the back. It is a generalization of both a stack and a queue. Deques are often used in applications where elements need to be inserted or deleted in the middle of a sequence, such as in a real-time video editor or a text editor.
## Deque Implementation in C++
The following code shows how to implement a deque in C++ using a linked list:
```c++
#include <iostream>
#include <list>
using namespace std;
// A deque class template
template <typename T>
class Deque {
public:
// Constructor
Deque() {}
// Destructor
~Deque() {
while (!empty()) {
pop_front();
}
}
// Check if the deque is empty
bool empty() const {
return front == nullptr;
}
// Get the number of elements in the deque
int size() const {
return (int) (back - front);
}
// Get the front element of the deque
T& front() {
return front->data;
}
// Get the back element of the deque
T& back() {
return back->data;
}
// Insert an element at the front of the deque
void push_front(const T& data) {
Node* new_node = new Node(data);
new_node->next = front;
front = new_node;
}
// Insert an element at the back of the deque
void push_back(const T& data) {
Node* new_node = new Node(data);
new_node->prev = back;
back = new_node;
}
// Remove the front element of the deque
void pop_front() {
if (empty()) {
throw "Deque is empty";
}
Node* old_front = front;
front = front->next;
delete old_front;
}
// Remove the back element of the deque
void pop_back() {
if (empty()) {
throw "Deque is empty";
}
Node* old_back = back;
back = back->prev;
delete old_back;
}
private:
// A node in the deque
struct Node {
T data;
Node* next;
Node* prev;
Node(const T& data) : data(data), next(nullptr), prev(nullptr) {}
};
// The front and back pointers of the deque
Node* front = nullptr;
Node* back = nullptr;
};
int main() {
// Create a deque of integers
Deque<int> deque;
// Insert some elements into the deque
deque.push_front(1);
deque.push_front(2);
deque.push_back(3);
deque.push_back(4);
// Print the elements of the deque
for (int i = 0; i < deque.size(); i++) {
cout << deque.at(i) << endl;
}
// Remove the front and back elements of the deque
deque.pop_front();
deque.pop_back();
// Print the elements of the deque again
for (int i = 0; i < deque.size(); i++) {
Một deque (hàng đợi kết thúc kép) là một cấu trúc dữ liệu tuyến tính cho phép các phần tử được chèn và xóa ở cả mặt trước và mặt sau.Đó là một khái quát của cả một ngăn xếp và hàng đợi.Deques thường được sử dụng trong các ứng dụng trong đó các yếu tố cần được chèn hoặc xóa ở giữa một chuỗi, chẳng hạn như trong trình chỉnh sửa video thời gian thực hoặc trình chỉnh sửa văn bản.
## Thực hiện Deque trong C ++
Mã sau đây cho thấy cách thực hiện Deque trong C ++ bằng danh sách được liên kết:
`` `C ++
#include <Istream>
#include <Bart>
sử dụng không gian tên STD;
// Mẫu lớp Deque
Mẫu <Typename T>
lớp deque {
công cộng:
// Người xây dựng
Deque () {}
// Destructor
~ Deque () {
while (! trống ()) {
pop_front ();
}
}
// kiểm tra xem deque có trống không
bool trống () const {
trả về phía trước == nullptr;
}
// Nhận số lượng các yếu tố trong deque
int size () const {
return (int) (mặt sau - phía trước);
}
// Nhận phần tử phía trước của deque
T & front () {
Trả về dữ liệu phía trước-> dữ liệu;
}
// Nhận phần tử trở lại của deque
T & back () {
trả lại lại-> dữ liệu;
}
// Chèn một phần tử ở phía trước của deque
void push_front (const t & data) {
Nút* new_node = node node (dữ liệu);
new_node-> next = front;
phía trước = new_node;
}
// Chèn một phần tử ở phía sau của deque
void push_back (const t & data) {
Nút* new_node = node node (dữ liệu);
new_node-> prev = trở lại;
trở lại = new_node;
}
// Tháo phần tử phía trước của deque
void pop_front () {
if (trống ()) {
Ném "Deque trống";
}
Nút* old_front = mặt trước;
phía trước = front-> tiếp theo;
xóa old_front;
}
// Tháo phần tử phía sau của deque
void pop_back () {
if (trống ()) {
Ném "Deque trống";
}
Nút* old_back = trở lại;
trở lại = Back-> prev;
Xóa Old_back;
}
riêng tư:
// một nút trong deque
Nút cấu trúc {
T dữ liệu;
Nút* tiếp theo;
Nút* trước;
Nút (const t & data): dữ liệu (dữ liệu), next (nullptr), prev (nullptr) {}
};
// Con trỏ phía trước và phía sau của deque
Nút* front = nullptr;
Nút* trở lại = nullptr;
};
int main () {
// Tạo một deque của các số nguyên
Deque <tt> deque;
// chèn một số yếu tố vào deque
deque.push_front (1);
deque.push_front (2);
deque.push_back (3);
deque.push_back (4);
// In các yếu tố của deque
for (int i = 0; i <deque.size (); i ++) {
cout << deque.at (i) << endl;
}
// Tháo các yếu tố phía trước và phía sau của deque
deque.pop_front ();
deque.pop_back ();
// In lại các yếu tố của deque một lần nữa
for (int i = 0; i <deque.size (); i ++) {
=======================================
#deque, #C++, #datastructure, #Queue, #Stack **Deque in C++**
A deque (double-ended queue) is a linear data structure that allows elements to be inserted and deleted at both the front and the back. It is a generalization of both a stack and a queue. Deques are often used in applications where elements need to be inserted or deleted in the middle of a sequence, such as in a real-time video editor or a text editor.
## Deque Implementation in C++
The following code shows how to implement a deque in C++ using a linked list:
```c++
#include <iostream>
#include <list>
using namespace std;
// A deque class template
template <typename T>
class Deque {
public:
// Constructor
Deque() {}
// Destructor
~Deque() {
while (!empty()) {
pop_front();
}
}
// Check if the deque is empty
bool empty() const {
return front == nullptr;
}
// Get the number of elements in the deque
int size() const {
return (int) (back - front);
}
// Get the front element of the deque
T& front() {
return front->data;
}
// Get the back element of the deque
T& back() {
return back->data;
}
// Insert an element at the front of the deque
void push_front(const T& data) {
Node* new_node = new Node(data);
new_node->next = front;
front = new_node;
}
// Insert an element at the back of the deque
void push_back(const T& data) {
Node* new_node = new Node(data);
new_node->prev = back;
back = new_node;
}
// Remove the front element of the deque
void pop_front() {
if (empty()) {
throw "Deque is empty";
}
Node* old_front = front;
front = front->next;
delete old_front;
}
// Remove the back element of the deque
void pop_back() {
if (empty()) {
throw "Deque is empty";
}
Node* old_back = back;
back = back->prev;
delete old_back;
}
private:
// A node in the deque
struct Node {
T data;
Node* next;
Node* prev;
Node(const T& data) : data(data), next(nullptr), prev(nullptr) {}
};
// The front and back pointers of the deque
Node* front = nullptr;
Node* back = nullptr;
};
int main() {
// Create a deque of integers
Deque<int> deque;
// Insert some elements into the deque
deque.push_front(1);
deque.push_front(2);
deque.push_back(3);
deque.push_back(4);
// Print the elements of the deque
for (int i = 0; i < deque.size(); i++) {
cout << deque.at(i) << endl;
}
// Remove the front and back elements of the deque
deque.pop_front();
deque.pop_back();
// Print the elements of the deque again
for (int i = 0; i < deque.size(); i++) {