栈(stack)

朱雀 2022-08-04 15:48 329阅读 0赞

1.什么是栈?

栈(stack)是一种只能在表的一端进行插入和删除的线性表。是一种一对一的线性关系。因为只能在栈顶进行插入和删除.这种结构特性决定了栈只能的性质:后进先出(Last In First Out),结构决定性质,性质决定用途,所以凡是具有后进先出特性的都可以用栈来描述这里主要介绍c++标准库中栈的接口及实现

2.stl中的stack

class stack<>模板实例化出一个栈stack(也称为LIFO,Last In First Out).你可以使用push()将元素置入stack的栈顶中(top),也可以使用pop()将栈顶元素弹出栈中,为了使用c++标准库中的stack,必须包含头文件

3.stack 的核心接口
push()向栈中压入一个数据元素,使之成为新的栈顶

top()取栈顶元素.使用之前必须对栈进行判空。如果栈为空,会导致未定义行为

pop()弹出栈顶元素,使用前必须对栈进行判空。如果栈为空,会导致未定义行为

4.实例代码

  1. #include<stack>
  2. #include<iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. //测试将{1,2,3,4,5,6}入栈.
  7. stack<int> int_stack;//int_stack为一个栈,用来存储int数据类型
  8. int_stack.push(1);//将数据压入栈中,成为新的栈顶元素
  9. if(!int_stack.empty())//取栈顶元素时top()必须判空,否则会导致未定义行为
  10. cout<<int_stack.top()<<"入栈"<<endl;
  11. if(!int_stack.empty())
  12. int_stack.push(2);
  13. if(!int_stack.empty())
  14. cout<<int_stack.top()<<"入栈"<<endl;
  15. int_stack.push(3);
  16. if(!int_stack.empty())
  17. cout<<int_stack.top()<<"入栈"<<endl;
  18. int_stack.push(4);
  19. if(!int_stack.empty())
  20. cout<<int_stack.top()<<"入栈"<<endl;
  21. int_stack.push(5);
  22. if(!int_stack.empty())
  23. cout<<int_stack.top()<<"入栈"<<endl;
  24. //将栈中元素依次出栈分别为{5,4,3,2,1}
  25. cout<<"栈中元素依次出栈:"<<endl;
  26. if(int_stack.empty())//如果栈非空,取栈顶元素top().将栈顶元素出栈pop();
  27. cout<<"栈已空!不能再top(),pop()啦!"<<endl;
  28. else
  29. {
  30. cout<<int_stack.top()<<"出栈!"<<endl;
  31. int_stack.pop();
  32. }
  33. if(int_stack.empty())//如果栈非空,取栈顶元素top().将栈顶元素出栈pop();
  34. cout<<"栈已空!不能再top(),pop()啦!"<<endl;
  35. else
  36. {
  37. cout<<int_stack.top()<<"出栈!"<<endl;
  38. int_stack.pop();
  39. }
  40. if(int_stack.empty())//如果栈非空,取栈顶元素top().将栈顶元素出栈pop();
  41. cout<<"栈已空!不能再top(),pop()啦!"<<endl;
  42. else
  43. {
  44. cout<<int_stack.top()<<"出栈!"<<endl;
  45. int_stack.pop();
  46. }
  47. if(int_stack.empty())//如果栈非空,取栈顶元素top().将栈顶元素出栈pop();
  48. cout<<"栈已空!不能再top(),pop()啦!"<<endl;
  49. else
  50. {
  51. cout<<int_stack.top()<<"出栈!"<<endl;
  52. int_stack.pop();
  53. }
  54. if(int_stack.empty())//如果栈非空,取栈顶元素top().将栈顶元素出栈pop();
  55. cout<<"栈已空!不能再top(),pop()啦!"<<endl;
  56. else
  57. {
  58. cout<<int_stack.top()<<"出栈!"<<endl;
  59. int_stack.pop();
  60. }
  61. if(int_stack.empty())//如果栈非空,取栈顶元素top().将栈顶元素出栈pop();
  62. cout<<"栈已空!不能再top(),pop()啦!"<<endl;
  63. else
  64. {
  65. cout<<int_stack.top()<<"出栈!"<<endl;
  66. int_stack.pop();
  67. }
  68. return 0;
  69. }

5.测试结果

Center

发表评论

表情:
评论列表 (有 0 条评论,329人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Stack

    一,概念 > 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO

    相关 C++stack

    栈:栈是一种数据结构,存储以及查找数据时只能访问栈的一端。栈后进先出(LIFO, last in first out) 栈的操作包括: Clear() ——清空栈 IsE

    相关 数据结构:(linked-stack & array-stack)

    栈是一种特别的线性表。在栈中,只能在数据的一端(即栈顶)进行操作。最经典的解释这个策略的例子就是叠盘子。盘子只能一个一个不断放在之前的盘子堆上,拿盘子的时候也只能从上往下一个一

    相关 stack

    1.什么是栈? 栈(stack)是一种只能在表的一端进行插入和删除的线性表。是一种一对一的线性关系。因为只能在栈顶进行插入和删除.这种结构特性决定了栈只能的性质:后进先

    相关 JavaStack

    当我们目空所极,认为望穿一切时,我们才发现我们是多么的可悲的井底之蛙。有些java学者,认为自己已经把java学的出神入化了,这本身就是一种多么可悲的自大啊,在你用到的,你或许

    相关 JVM--Stack

    栈(Stack) 栈也叫栈内存,主管java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题, 只要线程

    相关 Stack()

    【一】Stack(栈) > 特点:它是一个先进后出的有序列表 >     允许插入和删除的一端为栈顶(top),另一端为栈底(bottom) >     出栈pop,