zoukankan      html  css  js  c++  java
  • 行编辑

    #include<stdio.h>
    #include<malloc.h>

    typedef char SElemType;

    #include "stack.h"
    #define EOFILE '&'

    int visit(SElemType * e)
    {
      printf("%c", *e);
    }

    void LineEdit()
    {
      pSqstack S,T;
      char str[1000];
      int strlen=0;
      char e;
      char ch;

      InitStack(&S);
      InitStack(&T);

      ch=getchar();
      while(ch!=EOFILE)
       {
        while(ch!=EOFILE&&ch!='\n')
         {
           switch(ch){
     case '#':
       Pop(S,&ch);
       break;
     case '@':
       ClearStack(S);
       break;
     default:
       Push(S,ch);
       break;
     }
           ch=getchar();
         }
        if(ch=='\n')
          Push(S,ch);
          while(!StackEmpty(*S))
           {
      Pop(S,&e);
      Push(T,e);
           }
          while(!StackEmpty(*T))
           {
      Pop(T,&e);
      str[strlen++]=e;
           }
        if(ch!=EOFILE) ch=getchar();
      }
      str[strlen]='\0';
      printf("\n%s",str);

      DestroyStack(S);
      DestroyStack(T);
    }

    main()
    {
      printf("\n\n\n\n");
      LineEdit();
      printf("\n\nWelcome to visit http://zmofun.yeah.net !");
      getch();
    }

    stack.h

    #ifndef _STACK_H_
    #define _STACK_H_

    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define EQUAL 1
    #define OVERFLOW -1
    #define STACK_INIT_SIZE 100
    #define STACKINCREMENT 10

    struct STACK
    {
      SElemType *base;
      SElemType *top;
      int stacksize;
    };

    typedef struct STACK SqStack;
    typedef struct STACK *pSqstack;

    int InitStack(SqStack **S);
    void DestroyStack(SqStack *S);
    int ClearStack(SqStack *S);
    int StackEmpty(SqStack S);
    int StackLength(SqStack S);
    int GetTop(SqStack S,SElemType *e);
    int Push(SqStack *S,SElemType e);
    int Pop(SqStack *S,SElemType *e);
    #endif

    stack.c

    #include "stack.h"
    int InitStack(SqStack **S)
    {
      (*S)=(SqStack *)malloc(sizeof(SqStack));
      (*S)->base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
      if(!(*S)->base)exit(OVERFLOW);
      (*S)->top=(*S)->base;
      (*S)->stacksize=STACK_INIT_SIZE;
      return OK;
    }

    void DestroyStack(SqStack *S)
    {
     free(S->base);
     free(S);
    }

    int ClearStack(SqStack *S)
    {
      S->top=S->base;
    }

    int StackEmpty(SqStack S)
    {
      if(S.top==S.base) return TRUE;
      else
        return FALSE;
    }

    int StackLength(SqStack S)
    {
      int i;
      SElemType *p;
      i=0;
      p=S.top;
      while(p!=S.base)
        {p++;
         i++;
        }
    }

    int GetTop(SqStack S,SElemType *e)
    {
      if(S.top==S.base) return ERROR;
      *e=*(S.top-1);
      return OK;
    }

    int Push(SqStack *S,SElemType e)
    {
     /*
      if(S->top - S->base>=S->stacksize)
       {

         S->base=(SElemType *) realloc(S->base,
         (S->stacksize + STACKINCREMENT) * sizeof(SElemType));
         if(!S->base)exit(OVERFLOW);
         S->top=S->base+S->stacksize;
         S->stacksize += STACKINCREMENT;
       }
      */

      *(S->top++)=e;
      return OK;
    }

    int Pop(SqStack *S,SElemType *e)
    {
      if(S->top==S->base) return ERROR;
      *e=*--S->top;
      return OK;
    }

  • 相关阅读:
    2.airflow参数简介
    KETTLE元数据表
    KETTLE监控
    KETTLE设置变量
    KETTLE集群搭建
    KETTLE并行
    Android TextView setText内嵌html标签
    Android Fragment实现分屏
    Java基础之String,StringBuilder,StringBuffer
    踩过的坑之-----selector
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035172.html
Copyright © 2011-2022 走看看