برنامه نویسی

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

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;
    }
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ابتدا یک کلاس با نام ایجاد می کنیم Stack.

  2. حاوی الف خواهد بود struct Node با خواص زیر:

    • int data: مقدار گره را ذخیره می کند.
    • Node* next: به گره بعدی در پشته اشاره می کند.
    • Node(int val): سازنده برای مقداردهی اولیه data با val و next با nullptr.
  3. دارای یک خاصیت خواهد بود top:

    • Node* top: به گره بالای پشته اشاره می کند.
  4. یک سازنده اعلام خواهیم کرد 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;
    }
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا