پشته (پیاده سازی لیست پیوندی)، کد ↔ زبان

Summarize this content to 400 words in Persian Lang
ایجاد پشته (پیاده سازی لیست پیوندی)
class Stack {
private:
struct Node {
int data;
Node* next;
Node(int val) {
data = val;
next = nullptr;
}
};
Node* top;
public:
// Constructor to initialize stack
Stack() {
top = nullptr;
}
};
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ابتدا یک کلاس با نام ایجاد می کنیم Stack.
حاوی الف خواهد بود struct Node با خواص زیر:
int data: مقدار گره را ذخیره می کند.
Node* next: به گره بعدی در پشته اشاره می کند.
Node(int val): سازنده برای مقداردهی اولیه data با val و next با nullptr.
دارای یک خاصیت خواهد بود top:
Node* top: به گره بالای پشته اشاره می کند.
یک سازنده اعلام خواهیم کرد Stack():
آن را مقداردهی اولیه می کند top اشاره گر به nullptr، که یک پشته خالی را نشان می دهد.
عملیات فشار
void push(int item) {
Node* newNode = new Node(item);
newNode->next = top;
top = newNode;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ما یک روش تعریف می کنیم push(int item):
یک عدد صحیح می گیرد item به عنوان ورودی، که مقداری است که باید روی پشته فشار داده شود.
جدید ایجاد خواهیم کرد Node با item به عنوان ارزش آن
را تنظیم خواهیم کرد next اشاره گر گره جدید به جریان top گره
به روز خواهیم کرد top برای اشاره به گره جدید.
عملیات پاپ
int pop() {
if (isEmpty()) {
cout “Underflow: Stack is empty.\n”;
return -1;
}
Node* temp = top;
int poppedValue = temp->data;
top = top->next;
delete temp;
return poppedValue;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ما یک روش تعریف می کنیم pop():
یک عدد صحیح برمیگرداند که مقداری است که از بالای پشته حذف شده است.
ما بررسی می کنیم که آیا پشته خالی است (با استفاده از isEmpty()) اگر چنین است، “Underflow: Stack is خالی” را چاپ می کند. و برگشت -1.
در غیر این صورت انجام خواهیم داد:
ذخیره کنید top گره در یک اشاره گر موقت temp.
مقدار را از temp و آن را در آن ذخیره کنید poppedValue.
به روز رسانی top برای اشاره به گره بعدی در پشته.
را حذف کنید temp گره برای آزاد کردن حافظه
برگشتن poppedValue.
عملیات زیرچشمی
int peek() {
if (isEmpty()) {
cout “Stack is empty.\n”;
return -1;
}
return top->data;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ما یک روش تعریف می کنیم peek():
یک عدد صحیح را برمی گرداند که مقدار بالای پشته است.
ما بررسی می کنیم که آیا پشته خالی است (با استفاده از isEmpty()) اگر چنین است، “پشته خالی است” را چاپ می کند. و برگشت -1.
در غیر این صورت، مقدار the را برمی گرداند top گره
عملیات خالی است
bool isEmpty() {
return top == nullptr;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ما یک روش تعریف می کنیم isEmpty():
یک مقدار بولی برمیگرداند که نشان میدهد آیا پشته خالی است یا خیر.
باز می گردد true اگر top است nullptr، نشان می دهد که پشته خالی است.
در غیر این صورت باز خواهد گشت false.
پیاده سازی کامل کد
#include
using namespace std;
class Stack {
private:
struct Node {
int data;
Node* next;
Node(int val) {
data = val;
next = nullptr;
}
};
Node* top;
public:
// Constructor to initialize stack
Stack() {
top = nullptr;
}
// Destructor to free allocated memory
~Stack() {
while (!isEmpty()) {
pop();
}
}
// Push operation
void push(int item) {
Node* newNode = new Node(item);
newNode->next = top;
top = newNode;
}
// Pop operation
int pop() {
if (isEmpty()) {
cout “Underflow: Stack is empty.\n”;
return -1;
}
Node* temp = top;
int poppedValue = temp->data;
top = top->next;
delete temp;
return poppedValue;
}
// Peek operation
int peek() {
if (isEmpty()) {
cout “Stack is empty.\n”;
return -1;
}
return top->data;
}
// Check if stack is empty
bool isEmpty() {
return top == nullptr;
}
};
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد پشته (پیاده سازی لیست پیوندی)
class Stack {
private:
struct Node {
int data;
Node* next;
Node(int val) {
data = val;
next = nullptr;
}
};
Node* top;
public:
// Constructor to initialize stack
Stack() {
top = nullptr;
}
};
-
ابتدا یک کلاس با نام ایجاد می کنیم
Stack
. -
حاوی الف خواهد بود
struct Node
با خواص زیر:-
int data
: مقدار گره را ذخیره می کند. -
Node* next
: به گره بعدی در پشته اشاره می کند. -
Node(int val)
: سازنده برای مقداردهی اولیهdata
باval
وnext
باnullptr
.
-
-
دارای یک خاصیت خواهد بود
top
:-
Node* top
: به گره بالای پشته اشاره می کند.
-
-
یک سازنده اعلام خواهیم کرد
Stack()
:- آن را مقداردهی اولیه می کند
top
اشاره گر بهnullptr
، که یک پشته خالی را نشان می دهد.
- آن را مقداردهی اولیه می کند
عملیات فشار
void push(int item) {
Node* newNode = new Node(item);
newNode->next = top;
top = newNode;
}
ما یک روش تعریف می کنیم push(int item)
:
- یک عدد صحیح می گیرد
item
به عنوان ورودی، که مقداری است که باید روی پشته فشار داده شود. - جدید ایجاد خواهیم کرد
Node
باitem
به عنوان ارزش آن - را تنظیم خواهیم کرد
next
اشاره گر گره جدید به جریانtop
گره - به روز خواهیم کرد
top
برای اشاره به گره جدید.
عملیات پاپ
int pop() {
if (isEmpty()) {
cout "Underflow: Stack is empty.\n";
return -1;
}
Node* temp = top;
int poppedValue = temp->data;
top = top->next;
delete temp;
return poppedValue;
}
ما یک روش تعریف می کنیم pop()
:
- یک عدد صحیح برمیگرداند که مقداری است که از بالای پشته حذف شده است.
- ما بررسی می کنیم که آیا پشته خالی است (با استفاده از
isEmpty()
) اگر چنین است، “Underflow: Stack is خالی” را چاپ می کند. و برگشت-1
. - در غیر این صورت انجام خواهیم داد:
- ذخیره کنید
top
گره در یک اشاره گر موقتtemp
. - مقدار را از
temp
و آن را در آن ذخیره کنیدpoppedValue
. - به روز رسانی
top
برای اشاره به گره بعدی در پشته. - را حذف کنید
temp
گره برای آزاد کردن حافظه - برگشتن
poppedValue
.
- ذخیره کنید
عملیات زیرچشمی
int peek() {
if (isEmpty()) {
cout "Stack is empty.\n";
return -1;
}
return top->data;
}
ما یک روش تعریف می کنیم peek()
:
- یک عدد صحیح را برمی گرداند که مقدار بالای پشته است.
- ما بررسی می کنیم که آیا پشته خالی است (با استفاده از
isEmpty()
) اگر چنین است، “پشته خالی است” را چاپ می کند. و برگشت-1
. - در غیر این صورت، مقدار the را برمی گرداند
top
گره
عملیات خالی است
bool isEmpty() {
return top == nullptr;
}
ما یک روش تعریف می کنیم isEmpty()
:
- یک مقدار بولی برمیگرداند که نشان میدهد آیا پشته خالی است یا خیر.
- باز می گردد
true
اگرtop
استnullptr
، نشان می دهد که پشته خالی است. - در غیر این صورت باز خواهد گشت
false
.
پیاده سازی کامل کد
#include
using namespace std;
class Stack {
private:
struct Node {
int data;
Node* next;
Node(int val) {
data = val;
next = nullptr;
}
};
Node* top;
public:
// Constructor to initialize stack
Stack() {
top = nullptr;
}
// Destructor to free allocated memory
~Stack() {
while (!isEmpty()) {
pop();
}
}
// Push operation
void push(int item) {
Node* newNode = new Node(item);
newNode->next = top;
top = newNode;
}
// Pop operation
int pop() {
if (isEmpty()) {
cout "Underflow: Stack is empty.\n";
return -1;
}
Node* temp = top;
int poppedValue = temp->data;
top = top->next;
delete temp;
return poppedValue;
}
// Peek operation
int peek() {
if (isEmpty()) {
cout "Stack is empty.\n";
return -1;
}
return top->data;
}
// Check if stack is empty
bool isEmpty() {
return top == nullptr;
}
};