/*数序栈*/
#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 Page_Load事件加载两次

    Page_Load 即使加上 if(!IsPostBack){ ……} 还时走了2次 这时候 或者看看你的程序和脚本,是不是刷新页面了 或者页面的样式有错误的地方  例如: background:ur ...

  2. [译]Stairway to Integration Services Level 9 - Control Flow Task Errors

    介绍 在本文中,我们会实验 MaximumErrorCount和ForceExecutioResult 故障容差属性,并且还要学习Control Flow task errors, event han ...

  3. Kali Rolling在虚拟机安装后的设置

    Kali Linux在2016年的第一个发行版——Kali Rolling是Debian的即时更新版,只要Debian中有更新,更新包就会放入Kali Rolling中,供用户下载使用.它为用户提供了 ...

  4. utf8字节

    <pre name="code" class="html">[root@wx03 0724]# perl a1.pl 112 [root@wx03 ...

  5. 修改MojoWeixin 只保留用户name 取消群昵称

    <pre name="code" class="python"> if($msg->type eq "friend_message& ...

  6. 实用推荐:12款Linux系统恢复工具

    12款Linux系统恢复工具 电脑死机,系统崩溃,总会给电脑使用者带来一定的损失.你是否不小心删除你的纪念图片?安装新系统时候,擦除了分区表?无法读取旧CD里面的数据?别急嘛-我们将会给您推荐一些免费 ...

  7. BZOJ 1324: Exca王者之剑

    1324: Exca王者之剑 Description Input 第一行给出数字N,M代表行列数.N,M均小于等于100 下面N行M列用于描述数字矩阵 Output 输出最多可以拿到多少块宝石 Sam ...

  8. C++_01_入门

    一.类的定义 Person.h类声明 Person.cpp类实现 main.cpp主函数 二.命名空间的使用 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv ...

  9. RBAC - 基于角色的权限控制

    ThinkPHP中关于RBAC使用详解 自己的源码下载:百度网盘,thinkPHP文件夹下,RBAC文件夹. 重要的是,权限信息的写入函数等.在源码中能找到,Modules/Amin/Common/c ...

  10. BZOJ 2157: 旅游( 树链剖分 )

    树链剖分.. 样例太大了根本没法调...顺便把数据生成器放上来 -------------------------------------------------------------------- ...