当前位置: 首页 > news >正文

6 线性表-栈-顺序存储

自己简直是强迫症晚期,上次因为对访问结构体成员该用什么方法困惑了很久,导致没把顺序存储的捣鼓出来(明明比链式的要好写)

今天花了个20分钟调好了

因为今天比较晚,赶时间就没给类型起别名用ElemType写,直接用了int类型。需要的话可以自行更改。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<iostream>
 4 using namespace std;
 5 #define maxsize 50
 6 /*顺序栈的定义*/
 7 typedef struct Snode{
 8 int data[maxsize];
 9 int top;
10 }SqStack;
11 /*栈的初始化:设置S.top为1,站顶元素是S.data[top]*/
12 void InitStack(SqStack *S)
13 {
14     (*S).top=-1;
15 }
16 /*判断栈是否为空:top==-1*/
17 int StackEmpty(SqStack *S)
18 {
19     if(S->top==-1) return 1;
20     else return 0;
21 }
22 /*入栈*/
23 int Push(SqStack *S,int x)
24 {
25     if(S->top==maxsize-1)//栈满了
26     return -1;
27     S->data[++S->top]=x;
28     /*这里等价于
29         S->top++;
30         S->data[S->top]=x;
31       先指针加一再入栈
32     */
33    // cout<<"push the data x:"<<x<<endl;
34     return 1;
35 }
36 /*读取栈顶元素*/
37 int GetTop(SqStack *S,int &x)
38 {
39     if(S->top==-1)//栈空
40     return -1;
41     x=S->data[S->top];
42     return 1;
43 }
44 /*出栈*/
45 int Pop(SqStack *S,int x)
46 {
47   if(S->top==-1)
48     return -1;//栈空,啥也吐不出来
49   x=S->data[S->top--];
50 
51   /*等价于
52   x=S->data[S->top];
53   S->top--;
54   */
55   return 1;
56 }
57 int main()
58 {
59     SqStack *S=(SqStack *)malloc(sizeof(SqStack));//一定要先生成一个指针
60     InitStack(S);
61     cout<<(*S).top<<endl;
62     int a1=StackEmpty(S);
63     cout<<a1<<endl;
64     cout<<"Test the function 'Push',input a data:";
65     cin>>a1;
66     Push(S,a1);
67     int w;
68     cout<<"Before GetTop,w is"<<w<<endl;
69 
70     GetTop(S,w);
71     cout<<"After GetTop,w is ";
72     cout<<w<<endl;
73     int q=100;
74     Push(S,q);
75     GetTop(S,w);
76     cout<<w<<endl;
77     cout<<"-------------------------------------"<<endl;
78     cout<<"Test the function 'Pop':";
79     Pop(S,w);
80     cout<<w<<endl;
81     cout<<"After Pop a data,the top of stack is:";
82      GetTop(S,w);
83     cout<<w<<endl;
84     return 0;
85 }

 

转载于:https://www.cnblogs.com/AKsnoopy/p/7266422.html

相关文章:

  • MySql 知识点——MQSQL必知必会读书笔记
  • 小学英语单词到动物九
  • SQL语句搜索中 union all 联合查询
  • this 基础使用方法
  • 【Java基础】12、java中方法的参数传递机制
  • OpenNebula学习第四节之磁盘镜像的制作
  • 转:Spring Boot中使用AOP统一处理Web请求日志
  • 《零基础入门学习Python》学习过程笔记【38类的继承】
  • 制作毛玻璃效果
  • 设计模式——简单工厂模式
  • 吐血分享:QQ群霸屏技术教程(接单篇)
  • js全局变量,局部变量
  • 2017百度之星资格赛 1003 度度熊与邪恶大魔王 背包DP
  • 8086汇编之 CALL 和 RET指令
  • c# 多线程编程中AutoResetEvent和ManualResetEvent
  • 2017届校招提前批面试回顾
  • Create React App 使用
  • Git的一些常用操作
  • go语言学习初探(一)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JavaScript新鲜事·第5期
  • Mysql5.6主从复制
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue 重置组件到初始状态
  • Yeoman_Bower_Grunt
  • 闭包,sync使用细节
  • 今年的LC3大会没了?
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 由插件封装引出的一丢丢思考
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 正则与JS中的正则
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1)(1.13) SiK无线电高级配置(六)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (九十四)函数和二维数组
  • (南京观海微电子)——COF介绍
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 设计一套高性能的弱事件机制
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET开发人员必知的八个网站
  • .NET业务框架的构建
  • :=
  • ;号自动换行
  • @ModelAttribute使用详解
  • [Apio2012]dispatching 左偏树
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [hive] 窗口函数 ROW_NUMBER()
  • [leetcode] Balanced Binary Tree