21xrx.com
2024-12-22 22:50:50 Sunday
登录
文章检索 我的文章 写文章
C++实现栈的基本操作及建立方法
2023-06-26 14:39:16 深夜i     --     --
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++中实现栈的基本操作及建立方法。在实际编程中,根据需要选择合适的实现方式,以便更好地完成算法任务。

  
  

评论区

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