网站dns解析,深圳市龙岗区住房和建设局网站,编程应用,业务外包的典型案例栈是一种限定只在表尾进行插入或删除操作的线性表#xff0c;栈也是线性表。表头称为栈的底部,表尾称为栈的顶部,表为空称为空栈。
栈又称为后进先出的线性表,栈也有两种表示:顺序栈与链式栈。顺序栈是利用一组地址连续的存储单元。依次存放从栈底到栈顶的数据元素。 #includ…栈是一种限定只在表尾进行插入或删除操作的线性表栈也是线性表。表头称为栈的底部,表尾称为栈的顶部,表为空称为空栈。
栈又称为后进先出的线性表,栈也有两种表示:顺序栈与链式栈。顺序栈是利用一组地址连续的存储单元。依次存放从栈底到栈顶的数据元素。 #includeiostream
using namespace std;
# define STACK_INIT_SIZE 100
# define STACKINCREMENT 10typedef 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存储分配失败!!!endlendl;}else{S.topS.base;S.stacksizeSTACK_INIT_SIZE;cout构造成功!!!endl;}
}void Push(SqStack S,int e)//插入元素e为栈顶元素
{if(S.top-S.baseS.stacksize){S.base(int *)realloc(S.base,(S.stacksizeSTACKINCREMENT)*sizeof(int));if(!S.base) cout存储分配失败!!!endlendl;else{S.stacksizeSTACKINCREMENT;S.topS.baseS.stacksize;}}*S.tope;
}void DisplayStack(SqStack S) //从栈底到栈顶逐次显示栈中的元素
{int *p;pS.base;if(S.baseS.top) cout当前栈为空栈!!!endlendl;else{cout当前栈内元素为: ;while(p!S.top){cout*(p) ;p;}coutendl;}
}int StackLength(SqStack S) //求长度
{int *p;pS.base;int i0;while(p!S.top) {p;i;}return i;
}void pop(SqStack S,int e) //出栈
{ if (S.topS.base) cout操作失败!!!endlendl;else {e*--S.top;DisplayStack(S);}
}void ClearStack(SqStack S)//清空
{int b;while(S.top!S.base) b*--S.top;if(S.topS.base) cout顺序栈已清空!!!endlendl;
}void StackEmpty(SqStack S)//判空
{if(S.topS.base) cout顺序栈为空!!!endlendl;else cout顺序栈不为空!!!endlendl;
}void DestroyStack(SqStack S)
{S.baseNULL;cout顺序栈已销毁!!!endlendl;
}void GetTop(SqStack S,int e)//返回栈顶元素
{if(S.topS.base) cout操作失败!!!endlendl;else{cout栈顶元素为: ;e*(S.top-1);couteendlendl;}
}int main()
{cout* 1、构造一个空栈 *endl;cout* 2、输入栈的元素 *endl;cout* 3、输出栈的元素 *endl;cout* 4、求栈的长度 *endl;cout* 5、求栈顶元素 *endl;cout* 6、删除栈顶元素 *endl;cout* 7、清空已存在的栈 *endl;cout* 8、判断栈是否为空 *endl;cout* 0、销毁栈 *endl;int n,k;SqStack S;for(n0;n15;n)
{cout请选择0-8: ;cink;if(k0) {DestroyStack(S);n15;}if(k1) InitStack(S);if(k2) {int a;cout输入栈S的元素为: ;cina;Push(S,a);DisplayStack(S);}if(k3) DisplayStack(S);if(k4) cout栈的长度为: StackLength(S)endlendl;if(k5) {int c;GetTop(S,c);}if(k6) {int b;pop(S,b);}if(k7) ClearStack(S);if(k8) StackEmpty(S);}
return 0;
}