2.1 顺序栈

摘要:
#include#include #defineMaxSize50//序列堆栈与数组相同。下标从0开始,第一个元素占据0的位置,堆栈空间为top=-1,堆栈中充满MaxSize-1//请记住顺序存储的存储结构。
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50

// 顺序栈同数组,下标是从0开始,第一个元素占据0号位置,栈空为top=-1,栈满是MaxSize-1
// 记住顺序存储的存储结构。注意有top标记和元素数组
// 关键操作:1.判空(S->top=-1),判满(top=MaxSize-1);2.S->data[++S->top]=e
// 一般return的原则:先return 0再return 1. 判空的return 空则return 1 满则return 0
// 口诀:判空就是空为1 return 1

typedef struct{
    int data[MaxSize];            // 顺序栈,是个数组
    int top;
}SqStack;

//初始化
void InitStack(SqStack *S){
    S->top=-1;
}

int StackEmpty(SqStack *S){
    if(S->top==-1) return 1;      // 确实是空栈
    else
    return 0;
}

//进栈
int Push(SqStack *S,int e){
    if(S->top==MaxSize-1) return 0;
        S->data[++S->top]=e;      // 注意顺序,要是先加再执行
    return 1;
}
// 出栈
int Pop(SqStack *S,int *e){
    if(StackEmpty(S))             // 空是返回的-1错误信息,非空才执行下面
        return 0;
    else
        *e=S->data[S->top--];
    return 1;
}

// 读取栈顶元素,同Pop只是不改变top的计数
int GetTop(SqStack *S,int *e){
    if(StackEmpty(S))             // 空是返回的-1错误信息,非空才执行下面
        return 0;
    else
        *e=S->data[S->top];
    return 1;
}

int main(){
    int e1,e2,e3;
    SqStack S;
    InitStack(&S);

    Push(&S,1);
    Push(&S,2);
    Push(&S,3);
    Push(&S,4);
    Push(&S,5);
    
    Pop(&S,&e1);        printf("Pop:%d
",e1);
    GetTop(&S,&e2);     printf("GetTop:%d
",e2);
}

免责声明:文章转载自《2.1 顺序栈》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Scala核心编程_第06章 面向对象编程(基础部分)(转)Asp.Net(C#) XML+Xslt转Excel的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

ubuntu网卡配置

网卡配置文件采用YAML格式,必须以/etc/netplan/XXX.yaml文件命名方式存放可以每个网卡对应一个单独的配置文件,也可以将所有网卡都放在一个配置文件里自动获取IProot@ubuntu1804:~#cat/etc/netplan/01-netcfg.yaml#Thisfiledescribesthenetworkinterfacesavail...

Vue实现左侧可伸缩

导出默认值{name:‘Home’,data(){return{openStatus:true,open_close:true,}},方法:{change()}this.openStatus=!this.openStatusif(this.open状态){setTimeout(()=˃{this.open_close=true},1000)}else{set...

apk反编译与破解

以前版本的bat的名称可能有点不同。)获取d2j-dex2jar.bat目录中的classs-dex2jar.car文件,然后使用jd_GUI工具打开jar文件以查看java源代码。...

socket网络编程(二)—— 实现持续发送

exit(exit_FAILURE);}//初始化套接字元素structsockaddr_inserver_addr;intserver_len=大小(server_addr);内存集(&amp;server_len);0){ERR_EXIT(“listenclientfail”);client_len);buffer);}//关闭套接字(m_con...

js获取移动端设备信息(IMEM,IMIS,手机型号,系统版本,浏览器信息等)

方法1:HTML+打包方法、附加配置和使用指定方法打包是可用属性:imei:device的国际移动设备ID imsi:device的国际移动用户ID型号:device的型号供应商:device制造商uuid:device唯一标识参考地址:http://www.html5plus.org/doc/zh_cn/device.html方法2:引用插件mobile-...

fiddler抓包+雷电模拟器 完成手机app抓包的配置

找到系统应用,点击设置,点击无线网络WLAN—˃左键常按点击已连接网络—˃修改网络鼠标左键长按在桌面找到下面这个文件之后双击打开上面证书弄完之后。可以说本机已经安装过证书了,如果你能在模拟器上找到这个证书就不用将这个证书再拉入模拟器了在模拟器中打开系统应用—˃设置—˃安全—˃从SD卡安装。找到FiddlerRoot.cer文件,按提示导入即可,注意在此过程需...