首页 > 其他分享 >2023-03-30-栈的基本操作

2023-03-30-栈的基本操作

时间:2023-03-30 20:47:14浏览次数:40  
标签:03 return SqStack int true top 30 基本操作 data

 1 //栈stack
 2 
 3 
 4 #include <stdio.h>
 5 #include <stdbool.h>
 6 
 7 #define MAXSIZE 100
 8 
 9 typedef struct
10 {
11     int data[MAXSIZE]; //数据
12     int top;   //栈顶指针,初始为-1
13 }*SqStack;
14 
15 void initStack(SqStack S)//初始化栈
16 {
17     S->top=-1;//将栈顶指针设置为-1,所以每次top都指向最后一个元素在数组中的下标,而不是最后一个元素的下一个位置
18 }
19 
20 bool StackEmpty(SqStack S)//判断栈是否为空
21 {
22     if(S->top==-1)//判断栈顶指针是否为-1
23     {
24         return true;//如果是就返回true
25     }
26     else{
27         return false;
28     }
29 }
30 
31 bool Push(SqStack S,int value)//进栈
32 {
33     if(S->top==MAXSIZE-1)//top为0时即指向data[0],数组的最大长度为MAXSIZE-1,所以top也是
34     {
35         return false;
36     }
37     else{
38         S->top++;
39         S->data[S->top] = value;
40         return true;
41     }
42 }
43 
44 bool Pop(SqStack S,int *e)//出栈,并获取出栈元素的值
45 {
46     if(S->top==-1)
47     {
48         return false;
49     }
50     else{
51         *e=S->data[S->top];
52         S->top--;
53         return true;
54     }
55 }
56 
57 bool GetTop(SqStack S,int *e)//读栈顶元素
58 {
59     if(S->top==-1)
60     {
61         return false;
62     }
63     else
64     {
65         *e=S->data[S->top];//将栈顶元素传给e
66         return true;
67     }
68 }
69 
70 int main()
71 {
72     SqStack S;
73     initStack(S);
74     int x;
75     for(int i=0;i<5;i++)
76     {
77         scanf("%d",&x);
78         Push(S,x);
79     }
80     for(int j=0;j<=S->top;j++)
81     {
82         printf("%d ",S->data[j]);
83     }
84     int *e;
85     int a=0;
86     e=&a;//对指针进行初始化,避免出现野指针
87     GetTop(S,e);
88     printf("TOP: %d\n",*e);
89     Pop(S,e);
90     printf("Pop_value: %d \n",*e);
91     //以下为错误代码,为什么添加了下列代码之后程序就跑不起来了?
92     // for(int pp=0;pp<=(S->top);pp++)
93     // {
94     //     printf("%d",S->data[pp]);
95     // }
96     return 0;
97 }

 

标签:03,return,SqStack,int,true,top,30,基本操作,data
From: https://www.cnblogs.com/ryuichi-ssk/p/17274211.html

相关文章

  • 总结20230330
    今天是周四,又是一周内上课时间最短的一天。今天的课是计算机网络和羽毛球课;今天是把计算机网络昨天的课补了回来,今天计网开启了第四章,讲的是网络层。下午的羽毛球课时间是打双打比赛,结果不理想,打了两场,输了一场,还是再接再厉吧,下节课加油!今天晚上接着学习小程序。......
  • 230330实验三
    实验1 1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN806voidprint_text(intline,intcol,chartext[]);//函数声明7voidprint_spaces(intn);//函数声明8voidprint_blank_l......
  • 密码学SAT入门003——关于流密码入门算法A5-1的学习
      电子科技大学《现代密码学》慕课截图——感谢聂旭云、廖永建、熊虎等几位老师的讲解                                         算法code A5_1.algprogramdescribe......
  • 2023年3月30日(软件工程日报)
    针对团队作业要求学习遗传算法:一类借鉴生物界自然选择和自然遗传机制的随机搜索算法,非常适用于处理传统搜索方法难以解决复杂和非线性优化问题。基本思想:模拟自然界的繁殖,交叉,基因突变的现象,在每次迭代中保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子对个体进......
  • 构建之法阅读笔记03
    ①写了再改模式②瀑布模型(WaterfallModel)是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段......
  • 03-网络安全-web渗透环境搭建(基础篇)
    01--所需系统环境:虚拟主机系统部署(vmware,虚拟主机创建、虚拟主机网络配置(桥接,便于网络中多个主机都能访问虚拟主机)、虚拟软件功能,快照、克隆、镜像文件加载,ova文件制作)(模拟被攻击者、攻击者、通讯方)windows2003/2008windows 7/10linux系统  kail/contos02--网站服务架......
  • 2023年3月30日
    计划修改登陆页面和其他界面的一些背景图**和小芳汇报进度,先总结总结先删除不必要的东西复习之前的记录,搞清楚ssm框架,项目结构,然后开发mock和审核,看在哪加好好看一下狂神的spring整合的功能实现执行09点48分  开始11点40分  完成中期报告记录已解决的问题......
  • 202031607232-张玉国 实验一 软件工程准备 - 软件工程
    项目与内容项目内容班级博客链接班级博客本次作业要求链接作业要求我的课程学习目标学会在程序设计前进行合理的需求分析、可行性研究本次作业在哪些方面帮我实现学习目标带我了解软件工程任务任务一已完成问卷调查的填写。任务二已在博客园平......
  • What's the Client_Credentials grant type?
    What'stheClient_Credentialsgranttype?TheClientCredentialsgranttypeisatypeofOAuth2authenticationflowthatenablesaclienttoauthenticatewithaserverusingitsowncredentials,ratherthanonbehalfofauser.Inthisflow,thec......
  • 【蓝牙音频SoC】BES2700YP、BES2600YP、AB1565A、QCC3056助力TWS耳机实现更高音质效果
    1、高通QCC3056是一种超低功耗、单芯片解决方案,经过优化,可用于无线耳塞和耳戴式设备。它支持TrueWirelessMirroring技术,并具有广泛的差异化功能。QCC3056集成了1x80MHz3......