数据结构 - 顺序栈的基本操作

更新时间:2023-09-25 17:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#include using namespace std;

# define STACK_INIT_SIZE 100 # define STACKINCREMENT 10

typedef struct { int * base; int * top;

int stacksize;//当前栈可使用的最大容量 } SqStack;

void InitStack(SqStack &S)//构造一个空栈 { S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S.base) {cout<<\存储分配失败!!!\ else { S.top=S.base; S.stacksize=STACK_INIT_SIZE; cout<<\构造成功!!!\ } }

void Push(SqStack &S,int e)//插入元素e为栈顶元素 { if(S.top-S.base>=S.stacksize) { S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base) cout<<\存储分配失败!!!\ else { S.stacksize+=STACKINCREMENT; S.top=S.base+S.stacksize; } } *S.top++=e; }

void DisplayStack(SqStack &S) //从栈底到栈顶逐次显示栈中的元素 { int *p; p=S.base; if(S.base==S.top) cout<<\当前栈为空栈!!!\

else { cout<<\当前栈内元素为: \ while(p!=S.top) { cout<<*(p)<<\ p++; } cout<

int StackLength(SqStack S) //求长度 { int *p; p=S.base; int i=0; while(p!=S.top) {p++;i++;} return i; }

void pop(SqStack &S,int &e) //出栈 {

if (S.top==S.base) cout<<\操作失败!!!\ else { e=*--S.top; DisplayStack(S); } }

void ClearStack(SqStack &S)//清空 { int b; while(S.top!=S.base) b=*--S.top; if(S.top==S.base) cout<<\顺序栈已清空!!!\}

void StackEmpty(SqStack S)//判空 { if(S.top==S.base) cout<<\顺序栈为空!!!\ else cout<<\顺序栈不为空!!!\}

void DestroyStack(SqStack &S) { S.base=NULL; cout<<\顺序栈已销毁!!!\}

void GetTop(SqStack S,int &e)//返回栈顶元素 { if(S.top==S.base) cout<<\操作失败!!!\ else { cout<<\栈顶元素为: \ e=*(S.top-1); cout<

int main() { cout<<\ 1、构造一个空栈 cout<<\ 2、输入栈的元素 cout<<\ 3、输出栈的元素 cout<<\ 4、求栈的长度 cout<<\ 5、求栈顶元素 cout<<\ 6、删除栈顶元素 cout<<\ 7、清空已存在的栈 cout<<\ 8、判断栈是否为空 cout<<\ 0、销毁栈 int n,k; SqStack S;

for(n=0;n<15;n++) { cout<<\请选择0-8: \ cin>>k; if(k==0) {DestroyStack(S);n=15;} if(k==1) InitStack(S); if(k==2) { int a;

*\*\*\*\*\*\*\*\*\ cout<<\输入栈S的元素为: \ cin>>a; Push(S,a); DisplayStack(S); } if(k==3) DisplayStack(S); if(k==4) cout<<\栈的长度为: \ if(k==5) {int c;GetTop(S,c);} if(k==6) {int b;pop(S,b);} if(k==7) ClearStack(S); if(k==8) StackEmpty(S); }

return 0; }

本文来源:https://www.bwwdw.com/article/5xnd.html

Top