21xrx.com
2024-11-22 03:48:25 Friday
登录
文章检索 我的文章 写文章
C++顺序栈的实现程序
2023-07-13 06:31:54 深夜i     --     --
C++ 顺序栈 实现程序

C++顺序栈是一种基本的数据结构,它实现了LIFO(Last In First Out,后进先出)的存储方式。本文将介绍如何使用C++语言实现顺序栈。

首先,我们需要定义一个结构体来表示栈的元素。该结构体中只包含一个数据成员,即该元素的值:


struct ElemType

  int value; // the value of the element

;

接下来,我们将定义顺序栈类。该类包括以下成员函数:

1. 构造函数:用于创建一个空的栈。


Stack::Stack()

  top = -1;

2. 判断栈是否为空:如果栈为空,则返回true,否则返回false。


bool Stack::isEmpty() const

  return top == -1;

3. 判断栈是否已满:如果栈已满,则返回true,否则返回false。


bool Stack::isFull() const

  return top == MAX_SIZE - 1;

4. 入栈操作:将一个元素压入栈中,如果栈已满,则提示“栈已满”,否则按照先进后出的原则将该元素压入栈中。


void Stack::push(ElemType elem) {

  if (isFull())

    cout << "Stack is full." << endl;

  

  else {

    stack[++top] = elem;

  }

}

5. 出栈操作:将栈顶元素弹出栈,并返回该元素的值。如果栈已空,则提示“栈已空”。


ElemType Stack::pop() {

  if (isEmpty()) {

    cout << "Stack is empty." << endl;

    return ElemType{0};

  }

  else {

    return stack[top--];

  }

}

6. 获取栈顶元素:返回栈顶元素的值。如果栈已空,则提示“栈已空”。


ElemType Stack::getTop() const {

  if (isEmpty()) {

    cout << "Stack is empty." << endl;

    return ElemType{0};

  }

  else {

    return stack[top];

  }

}

完整的顺序栈类代码如下:


#define MAX_SIZE 100 // the maximum size of the stack

struct ElemType {

  int value; // the value of the element

};

class Stack {

private:

  ElemType stack[MAX_SIZE]; // the stack

  int top; // the top of the stack

public:

  // constructors

  Stack();

  // functions

  bool isEmpty() const;

  bool isFull() const;

  void push(ElemType elem);

  ElemType pop();

  ElemType getTop() const;

};

Stack::Stack() {

  top = -1;

}

bool Stack::isEmpty() const {

  return top == -1;

}

bool Stack::isFull() const {

  return top == MAX_SIZE - 1;

}

void Stack::push(ElemType elem) {

  if (isFull()) {

    cout << "Stack is full." << endl;

  }

  else {

    stack[++top] = elem;

  }

}

ElemType Stack::pop() {

  if (isEmpty()) {

    cout << "Stack is empty." << endl;

    return ElemType{0};

  }

  else {

    return stack[top--];

  }

}

ElemType Stack::getTop() const {

  if (isEmpty()) {

    cout << "Stack is empty." << endl;

    return ElemType{0};

  }

  else {

    return stack[top];

  }

}

在使用顺序栈时,可以先创建一个空栈:


Stack myStack;

然后开始进行入栈、出栈等操作:


myStack.push(ElemType{1});

myStack.push(ElemType{2});

myStack.push(ElemType{3});

cout << "The top of the stack is: " << myStack.getTop().value << endl;

ElemType elem1 = myStack.pop();

ElemType elem2 = myStack.pop();

cout << "The popped elements are: " << elem1.value << ", " << elem2.value << endl;

以上代码将会输出以下结果:


The top of the stack is: 3

The popped elements are: 3, 2

综上所述,本文介绍了如何使用C++语言实现顺序栈。使用该代码,可以轻松地实现顺序栈数据结构,并进行相应的入栈、出栈等操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复