c语言实现基本的数据结构(三) 栈
#include <stdio.h>
#include <tchar.h>
#include <stdlib.h> #define StackSize 5
#define IncrementSize 5
// TODO: 在此处引用程序需要的其他头文件
struct Stack
{
int *base;
int *top;
int stacksize;
};
//初始化栈
bool Init_Stack(Stack* s){
s->base = (int*)malloc(StackSize*sizeof(int));
if (s->base == NULL) return false;
s->top = s->base;
s->stacksize = StackSize;
return true;
}
//销毁栈
bool Destroy_Stack(Stack* s){
free(s->base);
s->base = NULL;
s->top = NULL;
s->stacksize = ;
return true;
}
//清空栈
bool Clear_Stack(Stack* s){
s->top = s->base;
return true;
}
//插入元素
bool Push(Stack* s, int value){
if (s->top - s->base >= s->stacksize){
s->base = (int*)realloc(s->base, (StackSize + IncrementSize)*sizeof(int));
s->top = s->base + s->stacksize;//重置一下栈顶,感觉也没多大必要呀
s->stacksize += IncrementSize;
}
*++s->top = value;//栈顶指向栈顶元素
s->stacksize++;
return true;
}
//弹出元素
int Pop(Stack* s){
if (s->top == s->base) return false;
int p = *s->top--;
s->stacksize--;
return p;
}
//逆序打印
void Print_Stack(Stack s){
if (s.top == s.base) printf("此栈为空\n");
while (s.top!=s.base){
printf("%d->", Pop(&s));
}
printf("\n");
}
//正序打印
void Stack_Traverse(Stack s){
if (s.top == s.base) printf("此栈为空\n");
while (s.top != s.base){
printf("%d->", *++s.base);
}
printf("\n");
}
c语言实现基本的数据结构(三) 栈的更多相关文章
- 学习javascript数据结构(三)——集合
前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...
- c语言自加自减三道题
int x , y,z; x = 0; y = z = -1; x += -z ---y; printf("x=%d\n",x) x = 2 为什么? x + = -z - - ...
- 不使用数据结构反转栈 递归 CVTE实习 CVTE是一家什么公司
本文因为垃圾csdn标题字限制,标题写不好.本文想说一个算法,和我在CVTE的实习,我看到CVTE是一家什么公司.如果想要喷我的,可以留言,我不会理.如果想喷公司,可以在博客评论或发到我邮件linde ...
- 数据结构(栈&堆 )
在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能 ...
- 学习javascript数据结构(一)——栈和队列
前言 只要你不计较得失,人生还有什么不能想法子克服的. 原文地址:学习javascript数据结构(一)--栈和队列 博主博客地址:Damonare的个人博客 几乎所有的编程语言都原生支持数组类型,因 ...
- C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()
本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该 ...
- 基础数据结构 之 栈(python实现)
栈是编程开发中的两种较为简单的数据结构.栈和队可用于模拟函数的递归.栈的特点是后进先出.其常用操作包括:出栈,入栈等.在出栈前,需判断栈是否为空.在入栈时,需判断栈是否已满. 下面给出一个用pytho ...
- PHP数据结构:栈、队列、堆、固定数组
数据结构:栈 队列: 堆: 固定尺寸的数组:
- python数据结构之栈与队列
python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...
- Python数据结构之栈的实现
一图胜千言,看图! 代码code: #coding:utf-8 #常见数据结构之栈的实现 class Stack(): #创建Stack类 def __init__(st,size): st.stac ...
随机推荐
- 好用的在线画图工具processon
ProcessOn是一款基于SaaS的前沿.高效线上作图工具,它将Visio.Xmind等专业作图工具搬到了"云端" 注册链接:https://www.processon.com/ ...
- Spring Cloud Alibaba | Nacos集群部署
目录 Spring Cloud Alibaba | Nacos集群部署 1. Nacos支持三种部署模式 2. 集群模式下部署Nacos 2.1 架构图 2.2 下载源码或者安装包 2.3 配置集群配 ...
- linux_硬链接和软链接区别
硬链接有点类似于复制的概念. ln 源文件 目的文件 ln不加-s,则默认是硬链接.例如,ln script script-hard,ls命令显示,script*显示硬链接有两个.我任意删 ...
- Scala 函数式编程(一) 什么是函数式编程?
为什么我们需要学习函数式编程?或者说函数式编程有什么优势?这个系列中我会用 scala 给你讲述函数式编程中的优势,以及一些函数式的哲学.不懂 scala 也没关系,scala 和 java 是类似的 ...
- VS2012-SSAS 表格模型安全性
模型安全性与AD域账户结合之后,浏览模型出现的问题: 当对在表“Products”中定义的行级别安全性表达式求值时遇到了错误.错误消息: 当对在表“Products”中定义的行级别安全性表达式求值时遇 ...
- 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件
批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...
- JAVA 使用 POI进行读取Excel表格示例
导包 编码 public class PoiTest { /** * 最终效果 * 表头一内容0 表头二内容1 表头三内容2 表头一内容1 表头二内容2 表头三内容3 表头一内容2 表头二内容3 表头 ...
- python课堂整理4---列表的魔法
一.list 类, 列表 li = [1, 12, 9, "age", ["大白", "小黑"], "alex"] ...
- ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core
前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...
- JAVA常用的集合类
package com.xian.test; import java.util.ArrayList; import java.util.Enumeration; import java.util.Ha ...