21xrx.com
2025-03-31 08:19:39 Monday
文章检索 我的文章 写文章
C++实现栈的基本操作及建立方法
2023-06-26 14:39:16 深夜i     20     0
C++ 基本操作 建立方法

栈是一种数据结构,它遵循后进先出(LIFO)的原则。C++中实现栈需要使用基本操作和建立方法,下面就分别进行介绍。

一、栈的基本操作

1.初始化操作:创建一个空栈,即为初始化。

2.压入操作:将新元素放在栈顶,即为压入操作。

3.弹出操作:将栈顶元素移除,即为弹出操作。

4.取栈顶操作:获取栈顶元素,但不删除,即为取栈顶操作。

5.判断是否为空操作:判断栈是否为空,若为空,返回true,否则返回false。

二、栈的建立方法

1.数组实现法:

可以采用数组来实现栈,数组中的第一个元素为栈底,最后一个元素为栈顶,通过下标来访问栈中元素。

代码示例:

#define MAXSIZE 100 //定义栈的最大容量
class Stack{
private:
  int data[MAXSIZE]; //定义一个数组来存放栈中元素
  int top; //定义栈顶指针
public:
  Stack()
    top = -1; //初始栈顶指针为-1
  
  
  bool isEmpty() //判断栈是否为空
    return top == -1;
  
  
  bool isFull() //判断栈是否已满
    return top == MAXSIZE-1;
  
  
  bool push(int item){ //将新元素压入栈中
    if(isFull())
      return false; //栈已满
    data[++top] = item; //将新元素放在栈顶,并指向新的栈顶位置
    return true;
  }
  
  bool pop(){ //将栈顶元素弹出
    if(isEmpty())
      return false; //栈为空
    top--; //栈顶指针减1,即为弹出栈顶元素
    return true;
  }
  
  int peek(){ //获取栈顶元素
    if(isEmpty())
      return -1; //栈为空
    return data[top]; //返回栈顶元素
  }
};

2.链表实现法:

可以采用链表来实现栈,链表的头部为栈顶,每一个节点存储一个元素。

代码示例:

class Node{
public:
  int data; //存储栈中元素
  Node *next; //指向下一个节点
  Node(int item) //构造函数
    data = item;
    next = NULL;
  
};
class LinkedStack{
private:
  Node *top; //定义头节点指针
public:
  LinkedStack()
    top = NULL; //头节点指针初始化为空
  
  
  bool isEmpty()
    return top == NULL;
  
  
  bool push(int item){
    Node *node = new Node(item); //创建一个新节点
    node->next = top; //将新节点指向当前头节点
    top = node; //将新节点作为新的头节点
    return true;
  }
  
  bool pop(){
    if(isEmpty())无法弹出元素
    
    Node *temp = top->next; //将头节点指向下一个节点
    delete top; //删除当前头节点
    top = temp; //将下一个节点作为新的头节点
    return true;
  }
  
  int peek(){
    if(isEmpty())
      return -1; //栈为空
    return top->data; //返回头节点的值
  }
};

综上所述,以上就是C++中实现栈的基本操作及建立方法。在实际编程中,根据需要选择合适的实现方式,以便更好地完成算法任务。

  
  

评论区

请求出错了