收藏 分销(赏)

实现顺序栈的出栈-取栈顶操作.doc

上传人:仙人****88 文档编号:9071800 上传时间:2025-03-12 格式:DOC 页数:3 大小:27.50KB 下载积分:10 金币
下载 相关 举报
实现顺序栈的出栈-取栈顶操作.doc_第1页
第1页 / 共3页
实现顺序栈的出栈-取栈顶操作.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
//实现顺序栈的出栈,取栈顶元素操作 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <malloc.h> #define OVERFLOW -1 #define OK 1 #define ERROR 0 typedef int Status; #define STACK_INIT_SIZE 10 #define STACK_INCREMENT 2 typedef int SElemType; //栈的顺序存储结构 typedef struct SqStack{ SElemType*base; SElemType*top; int stacksize; }SqStack; Status InitStack(SqStack &s){//初始化栈 s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));//申请连续的存储空间 if(! s.base) exit(OVERFLOW); s.top=s.base;//栈顶指针指向基地址 s.stacksize=STACK_INIT_SIZE;//申请空间的大小 return OK; } Status Push(SqStack &s,SElemType e){//插入e为新的栈顶元素 if(s.top-s.base>=s.stacksize){//栈已满,申请更大的存储空间 s.base=(SElemType*)realloc(s.base,(s.stacksize+STACK_INCREMENT)*sizeof(SElemType)); if(!s.base)//没有更大的存储空间,返回出错信息 exit(OVERFLOW); s.top=s.base+s.stacksize;//栈顶指针指向新空间的栈顶元素 s.stacksize+=STACK_INCREMENT;// 新空间的大小 } *(s.top)++=e;//插入元素e为栈顶元素,同时栈顶指针后移 return OK; } Status GetPop(SqStack &S, SElemType &e)//取栈顶元素操作 {//若栈不空,则由e返回栈顶元素,并返回ok,否则返回ERROR if(S.top == S.base) return ERROR; e = *(S.top-1); return OK; } Status Pop (SqStack &S, SElemType &e) {//出栈算法 // 若栈不空,则删除S的栈顶元素, // 用e返回其值,并返回OK; // 否则返回ERROR if (S.top == S.base) return ERROR; e = *--S.top; //先将栈顶指针指向当前栈顶元素,并将其赋给e return OK; } void StackTraverse(SqStack s){//输出栈中元素 SElemType*q=s.base; while(s.top>q) printf("%d ",*(q++)); printf("\n"); } void main(){//主函数 int n,e,i; SqStack s; InitStack(s);//初始化栈 printf("请输入栈的长度n\n"); scanf("%d",&n); printf("请输入%d个数据\n",n); for(i=1;i<=n;i++){ scanf("%d",&e); Push(s,e);//入栈 } printf("\n"); printf("s="); StackTraverse(s);//栈的遍历 GetPop(s,e); Pop(s,e); printf("取过栈顶后:\n"); printf("s="); StackTraverse(s); printf("栈顶元素为:%d\n",e); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服