zyt


私信TA

用户名:dotcpp0677703

访问量:68

签 名:

等  级
排  名 46179
经  验 318
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 周口师范学院
专  业

  自我简介:

TA的其他文章

解题思路:
栈的基本操作中的初始化,入栈和出栈
注意事项:
见 代码
参考代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#include <stdlib.h>


typedef char erElemType;

typedef int ElemType;


typedef struct Stack {

erElemType date[200];

ElemType Top0,Top;//Top0可以理解为栈头,另一个为栈尾

}Stack;


void Init_Stack(Stack& S)

{

    S.Top = -1;//这里若=0,需将上方变为date[201]

    S.Top0 = -1;

}


void Delete(Stack &S)

{                                 //#的作用

    if(S.Top!=1)//防止指针漂移

    S.Top-=2;//回退两格,即S.Top=S.Top-2;

}


void All_Delete(Stack& S)

{                             //@的作用

    S.Top = -1;//直接将栈尾回到栈头

}


void Print_Stack(Stack S)

{

    while (S.Top0 != S.Top)//防止指针漂移

    {

        printf("%c", S.date[++S.Top0]);//先自加后赋值,从数组下标从0开始计数

    }

    printf("\n");

}


int main()

{

    Stack S;

    erElemType c;//char型

    Init_Stack(S);//初始化

    c=getchar();输入一个字符

    while (c != EOF)

    {

        while (c != EOF&&c !='\n')

        {

            S.date[++S.Top] = c;

            if (c == '#')

            Delete(S);

            if (c == '@')

            All_Delete(S);

            c = getchar();

        }

        Print_Stack(S);

        All_Delete(S);//打印完后要将栈尾指回栈头

        c = getchar();

}

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »