C++ 栈实现:顺序存储与链表存储示例
以下是使用 C++ 语言实现栈的顺序和链表两种实现方式的示例代码:
- 栈的顺序实现:
#include <iostream>
using namespace std;
#define MAX_SIZE 100
class Stack {
private:
int arr[MAX_SIZE];
int top;
public:
Stack() {
top = -1;
}
bool isEmpty() {
return top == -1;
}
bool isFull() {
return top == MAX_SIZE - 1;
}
void push(int data) {
if (isFull()) {
cout << 'Stack is full. Cannot push element.' << endl;
return;
}
arr[++top] = data;
cout << 'Pushed element: ' << data << endl;
}
int pop() {
if (isEmpty()) {
cout << 'Stack is empty. Cannot pop element.' << endl;
return -1;
}
int data = arr[top--];
cout << 'Popped element: ' << data << endl;
return data;
}
int peek() {
if (isEmpty()) {
cout << 'Stack is empty. Cannot peek element.' << endl;
return -1;
}
return arr[top];
}
};
int main() {
Stack stack;
stack.push(10);
stack.push(20);
stack.push(30);
stack.pop();
stack.push(40);
cout << 'Top element: ' << stack.peek() << endl;
return 0;
}
- 栈的链表实现:
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int data) {
this->data = data;
this->next = nullptr;
}
};
class Stack {
private:
Node* top;
public:
Stack() {
top = nullptr;
}
bool isEmpty() {
return top == nullptr;
}
void push(int data) {
Node* newNode = new Node(data);
newNode->next = top;
top = newNode;
cout << 'Pushed element: ' << data << endl;
}
int pop() {
if (isEmpty()) {
cout << 'Stack is empty. Cannot pop element.' << endl;
return -1;
}
Node* temp = top;
int data = temp->data;
top = top->next;
delete temp;
cout << 'Popped element: ' << data << endl;
return data;
}
int peek() {
if (isEmpty()) {
cout << 'Stack is empty. Cannot peek element.' << endl;
return -1;
}
return top->data;
}
};
int main() {
Stack stack;
stack.push(10);
stack.push(20);
stack.push(30);
stack.pop();
stack.push(40);
cout << 'Top element: ' << stack.peek() << endl;
return 0;
}
希望以上示例代码可以帮助你实现栈的顺序和链表两种方式。如果有任何疑问,请随时提问!
原文地址: https://www.cveoy.top/t/topic/bUw6 著作权归作者所有。请勿转载和采集!