解题思路:
①:输入字符串,将字符串中字符逐个入栈
②:入栈时,非'#' 和非'@'字符入栈,遇到'#'字符,出栈前一个入栈字符,遇到'@'字符,前面所有已入栈的字符出栈,即栈置空
③:自栈底到栈顶,依次输出字符
参考代码:
#include<stdio.h> #include<string.h> typedef struct Stack_{ char data[201]; int top; /*栈顶指针*/ int base; /*栈底指针*/ }*Stack,STACK; void init(Stack s); void push_s(Stack s,char c); void pop_s(Stack s,char *e); int stack_empty(Stack s); int main() { char e,input_[201]; STACK s; while(gets(input_)!=NULL) { init(&s); for(int i=0;i<strlen(input_);i++) { if(input_[i]=='#') pop_s(&s,&e); else if(input_[i]=='@') init(&s); else push_s(&s,input_[i]); } /*输出,从栈底base向上到栈顶结束*/ while(s.base!=s.top) printf("%c",s.data[s.base++]); printf("\n"); } return 0; } /*========================================*/ void init(Stack s) { s->top=0; s->base=0; } /*========================================*/ void push_s(Stack s,char c) { s->data[s->top++]=c; } /*========================================*/ void pop_s(Stack s,char *e) { (*e)=s->data[--s->top]; } /*========================================*/ int stack_empty(Stack s) { if(s->top==0) return 1; else return 0; } /*========================================*/
0.0分
1 人评分
C语言训练-数字母 (C语言代码)浏览:601 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:561 |
1035 题解浏览:779 |
钟神赛车 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:672 |
C语言训练-8除不尽的数 (C语言代码)浏览:1396 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:602 |
很简单,,题解1041:C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:586 |
检查金币 (C语言代码)浏览:1412 |
用getchar()函数接收字符,正序输入为什么会倒序输出浏览:741 |