首页 > 其他 > 详细

栈的应用举例

时间:2019-10-05 11:03:17      阅读:77      评论:0      收藏:0      [点我收藏+]

栈的应用举例

进制转换

/* 进制转换,由十进制转换为8进制  */
void conversion()
{
    SLinkList S;
    SElemType e;
    InitStack(&S);
    int N;
    scanf("%d",&N);
    while (N) {
        Push(S,N%8);
        N /= 8;
    }
    /* 这时栈S刚好存放进制转换结果,把每一位按顺序pop出来就可以了 */
    while (!StackEmpty(S)) {
        Pop(S,&e);
        printf("%d",e);
    }
    DestoryStack(&S);
}

括号匹配检测

/* 括号匹配检测 */
void matching()
{
    SLinkList S;
    SElemType e = 0;
    InitStack(&S);  /* 初始化栈空间 */

    int c;
    while ((c=getchar()) != '\n') {
        if(c == '(' || c == '[')
            Push(S,c);
        if(c == ')' || c == ']') {
            GetTop(S,&e);       /* 获取栈顶元素 */
            if(c == ')' && e == '(')
                Pop(S,&e);      /* 栈顶元素和当前元素匹配则弹出 */
            else if(c == ']' && e == '[')
                Pop(S,&e);
            else {              /* 不匹配,则直接退出 */
                printf("not pip\n");
                DestoryStack(&S);
                return;
            }
        }
    }
    /* 最后检测栈是否空的 */
    if (!StackEmpty(S)) {
        printf("not pip\n");
    }else {
        printf("good\n");
    }
    DestoryStack(&S);    
}

栈的应用举例

原文:https://www.cnblogs.com/wjundong/p/11624058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!