c数据结构栈的基本操作(字符逆序输出)
线性栈
输入字符,再输出
#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数据结构栈的基本操作(字符逆序输出)的更多相关文章
- C语言:将字符串中的字符逆序输出,但不改变字符串中的内容。-在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
//将字符串中的字符逆序输出,但不改变字符串中的内容. #include <stdio.h> /************found************/ void fun (char ...
- java笔试之字符逆序(二)
与字符逆序(一)不同,句子逆序,单词顺序.例如:I am a student 输出为student a am I. 想法:先字符串句子逆序,然后针对每个单词再逆序一遍. package test; i ...
- C++关于数字逆序输出的两种思路,及字符串逆序输出
C++关于数字逆序输出的两种思路,及字符串逆序输出 作者:GREATCOFFEE 发布时间:NOVEMBER 15, 2012 分类:编程的艺术 最近在跟女神一起学C++(其实我是不怀好意),然后女神 ...
- c#编程:给定一个正整数求出是几位数并逆序输出
<span style="color:#FF0000;">第一步:把输入的数字转为字符串n.ToString() 第二步:求出字符串的长度即为正整数的位数 第三步:从后 ...
- nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))
266-字符串逆序输出 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:18 难度:0 题目描述: 给定一行字符,逆序输出此行(空格.数字不输出) 输入描述: 第一行是 ...
- 【云栖社区001-数据结构】如何实现一个高效的单向链表逆序输出(Java版)
如题 动手之前,发现自己很擅长用C语言来写链表. 不过,既然自己做的是Java开发,那么还是用Java实现这个算法吧:毕竟,以后的若干年里都差不多要跟Java打交道了. 于是,先将Java版的链表自学 ...
- 迭代器iterator(三):Listlterator遍历arraylist,并用逆序输出结果
迭代器(iterator) 是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概 念上的抽象:那些行为上像迭 ...
- 剑指Offer03 逆序输出链表&链表逆序
多写了个逆序链表 /************************************************************************* > File Name: ...
- 网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列
1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输 ...
随机推荐
- mac下 codeigniter在apache下去掉index.php
原文:http://blog.csdn.net/tutngfei1129287460/article/details/18359191 1.要修改Apache 的配置文件,让Apache支持rewri ...
- iOS - Xcode 插件
Xcode 插件 Xcode 插件安装目录: ~/library/Application Support/Developer/Shared/Xcode/Plug-ins Xcode 插件大全 http ...
- [java基础]循环结构1
[java基础]循环结构1 循环结构:for循环,while循环,do_while循环在,增强型for循环 /** 文件路径:G:\JavaByHands\循环语句\ 文件名称:WhileTest.j ...
- block(闭包)
使用方式 1定义为类的属性 最后用来发布通知,执行block即可 甚至同时发送数据参数,给方法调用者,这样返回数据比返回值形式,更好, 因为这样传参,不是同步的,而是异步响应式的,更加灵活安全. 2定 ...
- 面试题2:BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇
BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内 ...
- 在centos中安装jenkins master测试环境
在centos中安装jenkins 1)安装目录 pwd (/home/AAA) 2)检查java是否安装 [AAA@Centos_AAA jenkins]$ java -version j ...
- 如何有效使用Project(1)——编制进度计划、保存基准
1.前言: 软件产品的研发.升级.定制等,一般都是以项目的形式进行,此时项目进度计划以及资源使用情况就变成了项目经理关注的重点.如何让项目计划有效可控,及时暴露问题?如何查看资源的负荷情况,看资源分配 ...
- Codeforces #369 div2 D.Directed Roads
D. Directed Roads time limit per test2 seconds memory limit per test256 megabytes inputstandard inpu ...
- 困扰我多年的Connection reset问题
第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入方的api第一次总是报这个错,当时又没有做处理,导 ...
- Linux摄像头驱动学习之:(六)UVC-基本框架代码分析
仿照内核的自带UVC(usb video class)驱动程序写的一版简化驱动,仅供学习,实际项目开发中应该尽量使用内核自带的驱动,除非内核自带的驱动不支持此款硬件才需要自己写驱动. 下面就直接上代码 ...