• 数据结构实验二:栈和队列的基本操作和应用


    栈——进制的转换

    #include <iostream.h>
    #include <malloc.h>
    #include <stdlib.h>
    typedef struct{
        int * base
        int *top;
        int stacksize;
    }Stack;
    int InitStack(Stack &S)
    {
        S.base = (int *) malloc(STACK_INIT_SIZE*sizeof(int));
        if (!S.base) exit(OVERFLOW);
        S.top = S.base;
        S.stacksize = STACK_INIT_SIZE;
        return 1;
    }
    int Push(Stack &S, int e )
    {
        if (S.top-S.base >= S.stacksize)
        {
            S.base = (int *) realloc(S.base, (S.stacksize + T) *sizeof(int));
            if (!S.base) exit(OVERFLOW);
            S.top = S.base + S.stacksize;
            S.stacksize += T;
        }
        *S.top++ = e;
        return 1;
    }
    int Pop(Stack &S, int &e)
    {
        if (S.top == S.basereturn 0;
        e = *--S.top;
        return 1;
    }
    int StackEmpty(Stack S)
    {
        if (S.top == S.base)
        return 1;
        else return 0;
    }
    void conversion(int N, int r)
    {
        Stack S;
        int e; 
        InitStack(S);
        while(N)
        {
            Push(S, N%r);
            N = N/r;
        }
    }
    while(!StackEmpty(S)){  
      Pop(S, e);
        cout << e;
    }
    void main()
    {
        int N, r;
        cin >> N;
        cin >> r;
        cout << N << "由十进制转换为" << r << "进制后的值为:";
        conversion(N, r);
        cout << endl;
    }

    括号匹配检验
    #include<iostream.h>
    #include<string.h>
    typedef struct node{
        elemtype data;
        struct node *next;
    }stack;
    stack *top;
    void push(elemtype n){
        stack *p;
        p=new stack;
        p->data=n;
        p->next=top->next;
        top->next=p;
    }
    void pop(){
        stack *q;
        q=top->next;
        top->next=top->next->next;
        delete q;
    }
    elemtype gettop(){
        return top->next->data;
    }
    void judge(char a[]){
        int i,tag=0,len=strlen(a);//tag==1 
        for(i=0;i<len;i++)
        if(a[i]=='('||a[i]=='['||a[i]=='{')
            {push(a[i]);continue;}
            if(top->next==NULL)
            {
                cout<<"No"<<endl;
                break;
                tag=1;
            }
            if(a[i]!=')'&&a[i]!=']'&&a[i]!='}')
            continue;
        if(a[i]-gettop()==1||a[i]-gettop()==2)
            pop();
            else
            {
                cout<<"No"<<endl;
                break;
                tag=1;
            }
        }
        if(tag==0&&i==len)
        {
            if(top->next==NULL)
            cout<<"Yes"<<endl;
            else
            cout<<"No"<<endl;
        }
        top->next=NULL;
    }
    int main()
    {
        top=new stack;
        top->next=NULL;
        char a[100];
        int n;
        cin>>n; 
        while(n--){
            cin>>a;
            judge(a);
        }
        return 0;

  • 相关阅读:
    redis全量复制和部分复制
    tp5怎么使用find_in_set
    ms1
    nginx+php上传大文件配置
    培训第一天!
    PHP中使用CURL(五)
    PHP中使用CURL(四)
    PHP中使用CURL(三)
    PHP中使用CURL(二)
    PHP中使用CURL(一)
  • 原文地址:https://www.cnblogs.com/ma6174/p/2313307.html
Copyright © 2020-2023  润新知