C++顺序栈基本操作

  1 #include <iostream>
  2 #define STACKSIZE 50/*设栈中元素个数为50个*/
  3 using namespace std;
  4
  5 struct SeqStack
  6 {
  7     int elem[STACKSIZE];
  8     int top;
  9 };
 10
 11 /*构造一个空栈*/
 12 void InitStack(SeqStack *S)
 13 {
 14     S->top=-1;
 15 }
 16
 17 /*将x置入S栈新栈顶*/
 18 bool Push(SeqStack *S,int x)
 19 {
 20     if(S->top==STACKSIZE-1)
 21         return false;
 22     S->top++;
 23     S->elem[S->top]=x;
 24     return true;
 25 }
 26
 27 /*将S栈顶元素弹出,放到x所指的存储空间中带出*/
 28 bool Pop(SeqStack * S,int &x)
 29 {
 30     if(S->top==-1)
 31         return false;
 32     x = S->elem[S->top];
 33     S->top--;
 34     return true;
 35 }
 36
 37 /*将栈S栈顶元素读出,放到x所指的存储空间中,栈顶指针保持不变*/
 38 bool GetTop(SeqStack * S, int &x)
 39 {
 40     if(S->top==-1)
 41         return false;
 42     x = S->elem[S->top];
 43     return true;
 44 }
 45
 46 /*将栈清空*/
 47 void ClearStack(SeqStack * S)
 48 {
 49     S->top=-1;
 50 }
 51
 52 /*判断栈S是否为空*/
 53 bool IsEmpty(SeqStack * S)
 54 {
 55     if(S->top==-1)
 56         return true;
 57     return false;
 58 }
 59
 60 /*判断栈S是否已满*/
 61 bool IsFull(SeqStack * S)
 62 {
 63     if(S->top==STACKSIZE-1)
 64         return true;
 65     return
 66         false;
 67 }
 68
 69 /*打印栈S所有元素*/
 70 void PrintStack(SeqStack S)
 71 {
 72     for(int i=0;i<=S.top;i++)
 73         cout << S.elem[i] << " ";
 74     cout << endl;
 75 }
 76
 77 int main(){
 78     SeqStack s;
 79     InitStack(&s);
 80
 81     for(int i=0;i<60;i++)
 82         Push(&s,i);
 83
 84     cout << IsFull(&s) << endl;
 85
 86     PrintStack(s);
 87
 88     int x=0;
 89
 90     Pop(&s,x);
 91     cout << "x= " << x << endl;
 92     PrintStack(s);
 93     Pop(&s,x);
 94     cout << "x= " << x << endl;
 95     PrintStack(s);
 96     Pop(&s,x);
 97     cout << "x= " << x << endl;
 98     PrintStack(s);
 99     Pop(&s,x);
100     cout << "x= " << x << endl;
101     PrintStack(s);
102
103     GetTop(&s,x);
104     cout << "x= " << x << endl;
105     PrintStack(s);
106
107     ClearStack(&s);
108     PrintStack(s);
109     cout << IsEmpty(&s) << endl;
110     return 0;
111 }
时间: 2024-12-20 13:40:37

C++顺序栈基本操作的相关文章

数据结构之顺序栈基本操作SqStack

顺序栈SqStack 基本操作 1 Status InitStack()//构造一个空栈S 2 Status DestroyStack()//销毁栈S,S不再存在 3 Status ClearStack()//把S置为空栈 4 Status StackEmpty()//若S为空栈,则返回true,否则返回false 5 int StackLength()//返回S的元素个数,即栈的长度 6 Status GetTop(SElemType &e)//若栈不空,则用e返回S的栈顶元素,并返回OK,否

3_顺序栈的基本操作

/****date:2014.12.08*****/ /***顺序栈的基本操作***/ /*** Last in First out ( LIFO ) ***/ 顺序栈:使用地址连续的内存单元依次保存栈中的数据,可以定义一个指定大小的结构数组来作为栈:栈底元素序号为0,栈顶元素序号为Top: 栈内元素遵循"后进先出"(LIFO)原则:只能在栈的一端进行操作,即在栈顶位置对栈内元素进行操作. 刚明白的道理:getchar() 对于 键盘的所有操作都算在内,敲击  回车键  也算一个输入信

顺序栈的栈基本操作(C语言版)

由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不支持 ,C++才支持,所以用 C语言写就需要使用指针 代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define STACK_INIT_SIZE 100//储存空间初始分配量 4 #define STACKINCREMENT 1

D_S 顺序栈的基本操作

//  main.cpp #include <iostream> using namespace std; #include "Status.h" typedef int SElemType; #include "SqStack.h" int main() { SqStack S; SElemType e; InitStack(S); Push(S,2); Push(S,4); Push(S,6); Push(S,8); cout<<&quo

顺序栈的基本操作

引入外部文件和初始条件 #include<stdlib.h> #include<stdio.h> #define MAXSIZE 100 顺序栈的存储结构:须有一个一维数组去存放栈中的基本元素,还要栈顶指针,用来存放栈顶元素的下标 typedef struct SqStack{ int elem; int top; }SqStack,*stack_type; 接着开始栈的初始化 stack_type Init_SqStack() { //创建一个顺序栈,返回一个指向顺序栈的指针,为

顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素

顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置.通常以top=-1表示空栈. 代码如下: #include<iostream> using namespace std; #define  TRUE 1 #define  FALSE 0 //顺序栈的存储结构 #define Stack_Size 50 //设栈中元素个数为50 typedef struct { int elem

顺序栈用C语言实现

从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表: 但从数据类型角度来看,它们是和线性表大不相同的两种重要的抽象数据类型. 顺序栈,即栈的顺序存储结构是用一组地址连续的存储单元依次存放自栈顶到栈顶的数据元素 typedef struct { int * base; //栈底指针,在栈构造之前和摧毁之后,base的值为NULL int * top; //栈顶指针,在非空栈始终指向栈顶元素的下一个位置 int stacksize; //

括号匹配问题(顺序栈实现)

本周老师作业留了两个.先上传一个吧.那个有时间我再传上来~ 本周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1)      初始化顺序栈 2)      实现入栈和出栈操作 3)      实现取栈顶元素和判空操作 括号匹配问题 3.编写主函数实现基本操作函数功能,并设置测试数据,测试合法和非法数据的输出结果. 4.程序调试运行并保存输出结果. 5.整理并提交实验作业. 1 #include <cstdio> 2 #include <cstring>

数据结构--顺序栈的实现

最近在看严蔚敏的数据结构,以下是参照 http://blog.csdn.net/WLxinliang/article/details/52894338 手写的顺序栈的实现代码: 1.头文件定义了常数项 //constant.h #include<iostream> #include<string.h> #include<stdlib.h> #include<malloc.h> using namespace std; #define TRUE 1 #defi