/*数序栈*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define SElemType char
#define STACK_INIT_SIZE 100
#define STACK_INCREMENT 10
#define OK 1
#define ERROR -1
#define Status int
#define OVER -1
/*栈空 top == base
**栈满 top-base = stacksize
**
*/
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
int length;
}SqStack;
/*数序栈结构*/ /*栈的初始化*/
Status initSqStack(SqStack *s)
{
s->base = (SElemType*)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(! s->base) return OVER;
s->top = s->base;
s->stacksize = STACK_INIT_SIZE;
s->length = ;
return OK;
}
Status pushSqStack(SqStack *s,const SElemType item)
{
/* stack full*/
if(s->top - s->base == STACK_INIT_SIZE)
{
s->base = (SElemType*)realloc(s->base,(STACK_INCREMENT+STACK_INIT_SIZE)*sizeof(SElemType));
if(!s->base) return OVER;
s->top = s->base+ s->stacksize;
s->stacksize += STACK_INCREMENT;
}
*s->top++ = item; return OK;
} Status popSqStack(SqStack *s,SElemType *item)
{
if(s->top == s->base) return ERROR;
*item = *--(s->top);
return OK;
}
/*获取栈长度*/
int lengthSqStack(SqStack *s)
{
return s->top-s->base;
} int main(void)
{
SElemType data;
SqStack s;
int len,i,sum =;
printf("Please input a binary digit\n");
initSqStack(&s);
scanf("%c",&data);
while(data !='#')
{
pushSqStack(&s,data);
scanf("%c",&data);
}
getchar();
len = lengthSqStack(&s);
for(i = ;i<len;i++)
{
popSqStack(&s,&data);
printf("%c",data);
sum += (data-)*pow(,i);
}
printf("Decimal is :%d.\n",sum);
getchar(); return ;
}

C语言顺序栈实现的更多相关文章

  1. C语言顺序栈

    10进制转任何进制 #include<stdio.h> #include<stdlib.h>#define maxSize 30typedef int DataType;typ ...

  2. 顺序栈的基本操作(C语言)

    由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不 ...

  3. 数据结构与算法之顺序栈C语言实现

    顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...

  4. C语言实现顺序栈

    C语言实现顺序栈,顺便加深刻++i,++i的区别 #include <stdio.h>#include <stdlib.h>#define maxsize 100/*写在前面的 ...

  5. C++语言实现顺序栈

    C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以去我的博客看看.在这篇博 ...

  6. C语言实现顺序栈以及栈的特点

    什么是栈? 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构,如下图所示. 从上图我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 ...

  7. 【小白成长撸】--顺序栈(C语言版)

    // 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...

  8. C语言实现顺序栈的初始化&进栈&出栈&读取栈顶元素

    /*顺序表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //设栈中元素个数为50 ...

  9. 栈(顺序栈)----C语言

    栈 栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底 顺序栈(顺序结构) 顺序栈:用一段连续的存储空间来存储栈中的数据 ...

随机推荐

  1. asp.net传值

    asp.net页面传至几种方法 Response.Redirect (或称 Query String 方式.URL方式) Response.Redirect("WebForm5.aspx&q ...

  2. CSS3框架!

    http://usablica.github.io/front-end-frameworks/compare.html?v=2.0

  3. Shell Script(1)----variable compare

    PS:在学习python的时间里,抽空复习自己学习的Linux下的shell脚本知识点 1.数据类型 学习一门语言,比较关心其数据的表示方式,以及数据的类型,这里首先看一个bash shell的脚本 ...

  4. 关于map

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对, ...

  5. dubbo 服务化

    当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等. 当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力 ...

  6. php 用户访问菜单页面,必须登录,判断用户是否登录

    <pre name="code" class="python"># 本节课大纲: 一.空模块和空操作 1.空操作 function _empty($ ...

  7. cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(六)-马里奥跳跃

    当w键按下时,马里奥执行跳跃动作 执行跳跃动作也是在MarioMove函数中调用的

  8. linux 命令之sar——监视系统状态

    摘要:在进行系统或者内核测试的时候,我们经常需要观察cpu利用率,缓冲区使用情况,文件读写情况等等.在linux系统下,我们可以用sar命令来达到这个要求. sar 命令行的常用格式: sar [op ...

  9. opencv是什么

    OpenCV是一个用于图像处理.分析.机器视觉方面的开源函数库.       不管你是做科学研究,还是商业应用,opencv都能够作为你理想的工具库,由于,对于这两者,它全然是免费的.该库採用C及C+ ...

  10. Linux DM9000网卡驱动程序完全分析

    Linux DM9000网卡驱动程序完全分析http://blog.csdn.net/ypoflyer/article/details/6209922