[Data structures]Stack
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1024 typedef struct _SqStack{ int *base; int *top; int stackSize; }SqStack; int InitStack(SqStack *S) { S->base = (int *)malloc(MAX*sizeof(int)); S->top = S->base; S->stackSize = MAX; return 1; } int GetTop(SqStack *S, int *e) { if(S->top == S->base){ return 0; }else{ *e = *(S->top - 1); return 1; } } int Push(SqStack *S, int e) { if(S->top - S->base >= S->stackSize){ return 0; } *(S->top++) = e; } int Pop(SqStack *S, int *e) { if(S->top == S->base){ return 0; }else{ *e = *(--S->top); return 1; } } int StackEmpty(SqStack *S) { if(S->top == S->base){ return 1; }else{ return 0; } } int ClearStack(SqStack *S) { S->top = S->base; return 1; } int PrintStack(SqStack *S) { int *p = S->base; while(p != S->top){ printf("%c", (char)*p); p++; } printf("\n"); return 1; } void Conversion() { SqStack S; int N; InitStack(&S); scanf(" %d", &N); printf("Decimal:%d, \nOctonary:", N); while(N){ Push(&S, N%8); N /= 8; } while(!StackEmpty(&S)){ Pop(&S, &N); printf("%d", N); } printf("\n"); } void Brackets() { SqStack S; char str[MAX]; int i=-1; int t; InitStack(&S); scanf(" %s", str); printf("Input:%s, \nMatching result:", str); while(str[++i] != 0){ GetTop(&S, &t); if(str[i] == '(' || str[i] == '['){ Push(&S, (int)str[i]); }else if(str[i] == ')'){ if((char)t != '('){ printf("Not match:%d\n", i); return; }else{ Pop(&S, &t); } }else if(str[i] == ']'){ if((char)t != '['){ printf("Not match:%d\n", i); return; }else{ Pop(&S, &t); } } } printf("Match ok.\n"); return; } void LineEdit() { SqStack S; char ch; int t; getchar();//Delete last '\n' InitStack(&S); while((ch = getchar()) != '$'){ if(ch != '\n'){ switch(ch){ case '#': Pop(&S, &t); break; case '@': ClearStack(&S); break; default: Push(&S, (int)ch); break; } }else{ PrintStack(&S); ClearStack(&S); } } } void main() { printf("log.anycle.com\n\n"); printf("Conversion:\n"); Conversion(); printf("\n"); printf("Brackets matching:\n"); Brackets(); printf("\n"); printf("Line edit:\n"); LineEdit(); printf("\n"); }
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
- 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
- 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
- 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
- Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
分类
最新评论
- Goonog
i get it now :) - 萧
@Fluzak:The web host... - Fluzak
Nice blog here! Also... - Albertarive
In my opinion you co... - ChesterHep
What does it plan? - ChesterHep
No, opposite. - mojoheadz
Everything is OK!... - Josephmaigh
I just want to say t... - ChesterHep
What good topic - AnthonyBub
Certainly, never it ...
发表评论: