线性栈

输入字符,再输出

#include "stdafx.h"

#include<stdlib.h>

#include<malloc.h>

#define STACK_SIZE 100

#define STACKINCREAMENT 10

#define ERROR 0

#define OK 1

#define OVERFLOW -2

typedef int SElemType;

typedef int Status;

typedef char CElemType;

//定义栈结构体

typedef struct Stack{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

//函数声明

Status InitStack(SqStack &S);

CElemType Push(SqStack &S, char e);

CElemType PrintfStack(SqStack S);

CElemType PopStack(SqStack &S);

Status StackLength(SqStack S);

int main()

{

SqStack S;

InitStack(S);

int i,  n;

char e;

printf("请输入需要输入数字的个数n=");

scanf_s("%d", &n);

for (i = 0; i < n; i++)

{

printf("第%d个字符为:",i+1);

scanf_s("\n%c", &e);

Push(S, e);

}

PrintfStack(S);

}

//构建新的空栈

Status InitStack(SqStack &S)

{

S.base = (SElemType*)malloc(STACK_SIZE*sizeof(SElemType));

if (!S.base)

return ERROR;

S.top = S.base;

S.stacksize = STACK_SIZE;

return OK;

}

//入栈操作

CElemType Push(SqStack &S, char e)

{

SElemType *p;

if (S.top - S.base >= S.stacksize)

{

S.base = (SElemType*)realloc(S.base, (STACK_SIZE + STACKINCREAMENT)*sizeof(SElemType));

if (!S.base)

exit(OVERFLOW);

p = S.base;

S.top = S.base + S.stacksize;

S.stacksize += STACKINCREAMENT;

}

*S.top++ = e;

return OK;

}

//输出栈中存储哪些元素

CElemType PrintfStack(SqStack S)

{

SElemType *p;

if (S.base == S.top)

{

printf("The Stack is Empty!!!\n");

return 0;

}

printf("栈顶先输出\n");

for (p = S.top - 1; p != S.base - 1; p--)

printf("%c ", *p);                            //从栈顶的元素最先输出

printf("\n");

}

//出栈操作

CElemType PopStack(SqStack &S)

{

if (S.base == S.top)

{

printf("The Stack is Empty!!!\n");

return OK;

}

printf("出栈的元素为%c\n", *(S.top - 1));

*(--S.top) = NULL;

}

//求栈的长度

Status StackLength(SqStack S)

{

printf("The Stack'length is %d !\n", S.top - S.base);

return OK;

}

c数据结构栈的基本操作(字符逆序输出)的更多相关文章

  1. C语言:将字符串中的字符逆序输出,但不改变字符串中的内容。-在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

    //将字符串中的字符逆序输出,但不改变字符串中的内容. #include <stdio.h> /************found************/ void fun (char ...

  2. java笔试之字符逆序(二)

    与字符逆序(一)不同,句子逆序,单词顺序.例如:I am a student 输出为student a am I. 想法:先字符串句子逆序,然后针对每个单词再逆序一遍. package test; i ...

  3. C++关于数字逆序输出的两种思路,及字符串逆序输出

    C++关于数字逆序输出的两种思路,及字符串逆序输出 作者:GREATCOFFEE 发布时间:NOVEMBER 15, 2012 分类:编程的艺术 最近在跟女神一起学C++(其实我是不怀好意),然后女神 ...

  4. c#编程:给定一个正整数求出是几位数并逆序输出

    <span style="color:#FF0000;">第一步:把输入的数字转为字符串n.ToString() 第二步:求出字符串的长度即为正整数的位数 第三步:从后 ...

  5. nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))

    266-字符串逆序输出 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:18 难度:0 题目描述: 给定一行字符,逆序输出此行(空格.数字不输出) 输入描述: 第一行是 ...

  6. 【云栖社区001-数据结构】如何实现一个高效的单向链表逆序输出(Java版)

    如题 动手之前,发现自己很擅长用C语言来写链表. 不过,既然自己做的是Java开发,那么还是用Java实现这个算法吧:毕竟,以后的若干年里都差不多要跟Java打交道了. 于是,先将Java版的链表自学 ...

  7. 迭代器iterator(三):Listlterator遍历arraylist,并用逆序输出结果

    迭代器(iterator) 是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概 念上的抽象:那些行为上像迭 ...

  8. 剑指Offer03 逆序输出链表&链表逆序

    多写了个逆序链表 /************************************************************************* > File Name: ...

  9. 网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列

    1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输 ...

随机推荐

  1. C语言面试题(一)

       裸辞后,本周开始求职之旅.令人厌烦的是,大多数公司都会通知你去面试,然后拿出一纸试题,开始作答,最后笔试成绩作为重要的参考来决定是否录取你.对于大学四年挂了三年科的我,习惯遇到问题令辟溪径,从不 ...

  2. 深入浅出设计模式——简单工厂模式(Simple Factory)

    介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ...

  3. python打怪之路【第三篇】:利用Python实现三级菜单

    程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...

  4. GitHub下载的 Git Shell中出现的字符支持警告,将字体修改为新宋体即可

    ——解决办法: 将命令行字体修改为新宋体就可以了. 文章引用:http://www.cnblogs.com/veryinf/archive/2012/10/26/2740899.html

  5. Eclipse 最全快捷键

    英文的

  6. spring+mybatis

    ---恢复内容开始--- 使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地 ...

  7. zabbix3.0.4 部署之二 (Centos6.5系统准备)

    1.安装Centos6.5  2.6.32-642.4.2.el6.x86_64 升级所有软件至最新: yum update 2.同步时间.安装ntpd yum  install ntpddate n ...

  8. b.Connector配置解析

    前面讲解到Tomcat中使用Digester框架进行server.xml到javaBean对象的映射,这篇文章以Connector的SSL通道为例,来讲解Connector的属性是如何注入的. 先看一 ...

  9. 网页项目——i家居网站

    本文介绍一个网页项目--i家居网站,小妹初来乍到,欢迎大家评论建议O(∩_∩)O~ 详细源代码.各种框架的实现以及素材均已上传百度云,需要的可以下载: 首页展示 用户注册页面 用户登录页面 商家注册页 ...

  10. call(),apply(),bind()与回调

    1.call(),apply(),bind()方法 JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定 ...