使用数组实现栈stack功能

简介:

《算法导论》数据结构那一章节的练习。

 

 

方法一:

使用静态数组

[c-sharp]  view plain copy print ?
  1. #include<stdio.h>  
  2. int SS[10];//定义一个数组作为stack  
  3. int top=0;//定义stack的指针  
  4. bool STACK_EMPTY()//判断stack是否为空  
  5. {  
  6.     if(top==0)  
  7.         return true;  
  8.     else  
  9.         return false;  
  10. }  
  11. void PUSH(int *S,int x)//入栈操作  
  12. {  
  13.     top=top+1;  
  14.     S[top]=x;  
  15. }  
  16. int POP(int *S)//出栈操作  
  17. {  
  18.     if(STACK_EMPTY())//如果栈为空,则返回-1  
  19.         return -1;  
  20.     else//如果栈不为空,则指针向前退1,返回当前指针所指向的元素  
  21.         top=top-1;  
  22.     return S[top+1];  
  23. }  
  24. void main()  
  25. {  
  26.     //连续压栈,将1,2,3,4,5一次存入栈中。  
  27.     PUSH(SS,1);  
  28.     PUSH(SS,2);  
  29.     PUSH(SS,3);  
  30.     PUSH(SS,4);  
  31.     PUSH(SS,5);  
  32.     while(top!=0)//如果栈不为空,则执行出栈操作,并输出出栈的元素。  
  33.     {  
  34.         int p=POP(SS);  
  35.         printf("%d/n",p);  
  36.     }  
  37. }  
 

 

方法二:

通过传递数组的引用实现

[c-sharp]  view plain copy print ?
  1. #include<stdio.h>  
  2. bool STACK_EMPTY(int &top)  
  3. {  
  4.     if(top==0)  
  5.         return true;  
  6.     else  
  7.         return false;  
  8. }  
  9. void PUSH(int *S,int x,int &top)  
  10. {  
  11.     top=top+1;  
  12.     S[top]=x;  
  13. }  
  14. int POP(int *S,int &top)  
  15. {  
  16.     if(STACK_EMPTY(top))  
  17.         return -1;  
  18.     else  
  19.         top=top-1;  
  20.     return S[top+1];  
  21. }  
  22. void main()  
  23. {  
  24.     int SS[10];  
  25.     int top=0;  
  26.     PUSH(SS,1,top);  
  27.     PUSH(SS,2,top);  
  28.     PUSH(SS,3,top);  
  29.     PUSH(SS,4,top);  
  30.     PUSH(SS,5,top);  
  31.     while(top!=0)  
  32.     {  
  33.         int p=POP(SS,top);  
  34.         printf("%d/n",p);  
  35.     }  
  36. //  printf("hello world!/n");  
  37. }  

 






本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2011/01/03/2297052.html,如需转载请自行联系原作者


目录
相关文章
|
9天前
数据结构(栈与列队)
数据结构(栈与列队)
13 1
|
14天前
|
存储 JavaScript 前端开发
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
52 1
|
10天前
【数据结构】-- 栈和队列
【数据结构】-- 栈和队列
10 0
|
15天前
探索顺序结构:栈的实现方式
探索顺序结构:栈的实现方式
|
15天前
|
存储 C语言
栈和队列题目练习
栈和队列题目练习
12 0
|
22天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
84 64
|
15天前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
17 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
15天前
初步认识栈和队列
初步认识栈和队列
40 10
|
2月前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
|
15天前
|
算法
数据结构与算法二:栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式
这篇文章讲解了栈的基本概念及其应用,并详细介绍了中缀表达式转换为后缀表达式的算法和实现步骤。
31 3