文档章节

数组栈-》与链表栈同接口-》与一个字符匹配的小应用

Palmer神经质
 Palmer神经质
发布于 2014/04/10 16:13
字数 464
阅读 15
收藏 0
/*************************************************************************
    > File Name: stack.h
    > Author: Palmer XU
    > Mail:  
    > Created Time: Wed 09 Apr 2014 09:39:55 PM EDT
 ************************************************************************/

#ifndef __STACK_H__
#define __STACK_H__

#include<stdio.h>
#define MAX_STACK 100

typedef struct stack
{
 int array[MAX_STACK];//动态申请时改为 int *array;
 int top;
}stack_t,*pstack_t;

int creat_stack(pstack_t*);//建立栈----------》此函数中数组大小可以尝试动态申请

int stack_not_empty(pstack_t);//判断栈为空

int push(pstack_t,int);//压栈

int pop(pstack_t,int*);//出栈

int top(pstack_t,int*);//读取栈顶元素

int clear_stack(pstack_t);//清除栈

int count_size(pstack_t);//计数

int destory_stack(pstack_t*);//消灭

#endif

#include<stdio.h>
#include"stack.h"
int main(void)
{
 pstack_t p;
 creat_stack(&p);
 int i = 0;
 char fp,flag;
 while('\n' != (fp = getchar()))
 {
  i = -1;
  switch(fp)
  {
   case '{': i = push(p,'}');break;
   case '[': i = push(p,']');break;
   case '(': i = push(p,')');break;
   case '}': 
    i = pop(p,&flag);
    if('}' != flag)
     i = -1;
    break;
   case ']':
     i = pop(p,&flag);
    if(']' != flag)
     i = -1;
    break;
   case ')':
     i = pop(p,&flag);
    if(')' != flag)
     i = -1;
    break;
   default:i = 0;break;
  }
  if(-1 == i)
  {
   printf(" `/%c/` ",fp);
   continue;
  }
  putchar(fp);
 }
 while(-1 != pop(p,&flag))
  printf("  %c",flag);
 printf("\n");

 return 0;
}

 

/*************************************************************************
    > File Name: stack_fun.c
    > Author: Palmer XU
    > Mail:  
    > Created Time: Wed 09 Apr 2014 10:06:42 PM EDT
 ************************************************************************/

#include"stack.h"
#include<stdlib.h>

int creat_stack(pstack_t *p_flag)
{
 pstack_t p;
 p = (pstack_t)malloc(sizeof(stack_t));
 if(NULL != p)
 {
  p->top = 0;
  *p_flag = p;
  return 0;
 }

 printf("error- -creat_stack\n");
 return -1;
}

int stack_not_empty(pstack_t p)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 if(0 != p->top)
  return 0;
 else
  return -1;
}

int push(pstack_t p,int data)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 if(MAX_STACK < p->top)
 {
  printf("error- -push :stack is full\n");
  return -1;
 }
 p->array[p->top] = data;
 p->top++;

 return 0;
}

int pop(pstack_t p,int *data)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 if(0 >= p->top)
 {
  return -1;
 }
 p->top--;
 *data = p->array[p->top];

 return 0;
}

int top(pstack_t p,int *data)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 if(0 >= p->top)
 {
  printf("error- -pop :strack is empty");
  return -1;
 }
 *data = p->array[p->top - 1];

 return 0;
}

int clear_stack(pstack_t p)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 p->top = 0;
 return 0;
}

int count_size(pstack_t p)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 return p->top;
}

int destory_stack(pstack_t *p)
{
 if(NULL == p)
 {
  printf("error\n");
  return -1;
 }
 free(*p);
 *p = NULL;
 return 0;
}

© 著作权归作者所有

Palmer神经质
粉丝 0
博文 9
码字总数 3660
作品 0
杭州
程序员
私信 提问
Java关于数据结构的实现:表、栈与队列

关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流。 文章目录 一 表...

郭孝星
2017/09/28
0
0
【剑指Offer】Java、Python题解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/meiqi0538/article/details/98089913 本文首发于我的个人博客:AIAS编...

皮乾东
08/01
0
0
python剑指offer66题

二维数组的查找 替换空格 从头到尾打印链表 重建二叉树 用两个栈实现队列 选择数组中的最小数字 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方 调整数组顺序使奇...

lyy0905
2018/06/03
0
0
自己动手实现java数据结构(三) 栈

1.栈的介绍   在许多算法设计中都需要一种"先进后出(First Input Last Output)"的数据结构,因而一种被称为"栈"的数据结构被抽象了出来。   栈的结构类似一个罐头:只有一个开口;先被放...

小熊餐馆
2018/12/06
0
0
利用栈实现浏览器的前进后退功能

1. 什么是栈? 栈的特点是后进先出,是一种“操作受限”的线性表,只允许在一端插入和删除。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,就应该首选“栈”...

落英坠露
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
29分钟前
6
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
40分钟前
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
46分钟前
4
0
composer爆错:zlib_decode():data error

解决办法:先用 composer diagnose 命令检测 然后 composer self-update 更新composer版本 最后执行 composer update 或者 composer install composer 切换阿里云镜像 用起来还快 composer c...

koothon
53分钟前
4
0
shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部