栈
时间:2022-04-22
本文章向大家介绍栈,主要内容包括数据结构、出栈操作、入栈操作、实例代码、运行结果、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
栈的基本操作就是出栈和入栈,这两个的时间复杂度都是O(1)
数据结构
typedef struct Stack{
int data[MAXSIZE];
int top;
}Stack;
出栈操作
int Pop(Stack *s){
if(s->top == -1)
return 0;
s->top--;
return s->data[s->top+1];
}
入栈操作
int Push(Stack *s,int num){
if(s->top == MAXSIZE-1)
return 0;
s->top++;
s->data[s->top] = num;
return 1;
}
实例代码
1 #include <stdio.h>
2 #include <stdlib.h>
3 #define MAXSIZE 20
4
5 typedef struct Stack{
6 int data[MAXSIZE];
7 int top;
8 }Stack;
9
10 void createStack(Stack *s,int n);
11 void showStack(Stack *s);
12 int Push(Stack *s,int num);
13 int Pop(Stack *s);
14
15 int main()
16 {
17 Stack *s = (Stack *)malloc(sizeof(Stack));
18 createStack(s,5);
19 showStack(s);
20
21 if(Push(s,0))
22 showStack(s);
23
24 printf("the pop number is:%dn",Pop(s));
25 printf("the pop number is:%dn",Pop(s));
26 printf("the pop number is:%dn",Pop(s));
27
28 showStack(s);
29
30 free(s);
31 return 0;
32 }
33
34 void createStack(Stack *s,int n){
35 int i;
36 s->top=0;
37 for(i=0;i<n;i++){
38 s->data[i] = i*2+1;
39 s->top++;
40 }
41 s->top--;
42 }
43
44 void showStack(Stack *s){
45 int i;
46 for(i=0;i<s->top+1;i++){
47 printf("%d->",s->data[i]);
48 }
49 printf("topn");
50 }
51
52 int Push(Stack *s,int num){
53 if(s->top == MAXSIZE-1)
54 return 0;
55 s->top++;
56 s->data[s->top] = num;
57 return 1;
58 }
59 int Pop(Stack *s){
60 if(s->top == -1)
61 return 0;
62 s->top--;
63 return s->data[s->top+1];
64 }
运行结果
- MyBatis + MySQL返回插入成功后的主键id
- struts2+spring+hibernate整合步骤(1)
- 微信公众号问题:{"errcode":40125,"errmsg":"invalid appsecret, view more at http://t.cn/LOEdzVq, hints: [
- reflow和repaint(摘录自张鑫旭的翻译)
- git删除本地分支
- org.springframework.data.redis.serializer.SerializationException: Cannot serialize;
- 样式化加载失败的图片
- 使用telnet命令验证邮箱(r4笔记第19天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十二)Spring集成Redis缓存
- 前端开发中的字符编码
- 算法工程师的面试难不难,如何准备?-图像处理/CV/ML/DL到HR面总结
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
- 通过使用hint unnest调优sql语句(r4笔记第38天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据库SQL语言从入门到精通--Part 2--MySQL安装
- ACM-ICPC 2019 山东省省赛 A Calandar
- POJ 1845-Sumdiv(厉害了这个题)
- 数据库SQL语言从入门到精通--Part 1--SQL语言概述
- DP背包(一)
- 程序员最喜欢用的在线代码编译器,什么?你竟然不知道!可以在网页敲代码,运行调试!
- ZOJ 3623 Battle Ships
- POJ 2955 区间DP必看的括号匹配问题,经典例题
- POJ 3211 Washing Clothes
- 1745 Divisibility
- POJ 3616 Milking Time
- C++面向对象编程类对象的定义
- Codeforce 1102 C. Doors Breaking and Repairing
- CodeForces - 1102B Array K-Coloring
- background-size之详解