当前位置:编程学习 > C/C++ >>

数据结构相关复习---链栈,顺序栈,括号匹配算法

顺序栈
[cpp]  
#include<stdio.h>  
//初始化栈[顺序栈]  
void initStack(SeqStack * s)  
{  
    s->top=-1;  
}  
//进栈  
int push(SeqStack *s,StackElementType x)  
{  
    if(s->top == Stack_size-1)  
    {  
        return false;  
    }  
    s->top++;  
    s->elem[s->top]=x;  
    return true;  
}  
//出栈  
int Pop(SeqStack *s,StackElementType *x)  
{  
    if(s->top==-1)  
    {  
        return false;  
    }else  
    {  
        *x=s->elem[s->top];  
        s->top--;  
        return true;  
    }  
}  
//取栈顶元素  
int GetTop(SeqStack *s,StackElementType *x)  
{  
    if(s->top==-1)  
    {  
        return false;  
    }else  
    {  
        *x=s->elem[s->s->top];  
        return true;  
    }  
}  
int main(void)  
{  
    return 0;  
}  
链栈
[cpp]  
#include<stdio.h>  
typedef struct node  
{  
    StackElementType data;  
    struct node *next;  
}LinkStackNode;  
typedef LinkStackNode * LinkStack;  
  
//进栈【链栈】  
int push(SeqStack top,StackElementType x)  
{  
    LinkStackNode * temp;  
    temp = (LinkStackNode)malloc(sizeof(LinkStackNode));  
    if(temp==NULL)//申请空间失败  
        return false;  
    temp->data=x;  
      
    temp->next=top->next;  
    top->next=temp;  
      
    return true;  
}  
//出栈【链栈】  
int Pop(SeqStack top,StackElementType *x)  
{  
    LinkStackNode * temp;  
    temp=top->next;  
    if(temp==NULL)//栈为空  
        return false;  
      
    top->next=temp->next;  
      
    *x=temp->data;  
    free(temp);  
    return true;  
}  
int main(void)  
{  
    return 0;  
}  
括号匹配算法
[cpp]  
#include<stdio.h>  
//括号匹配算法  
void BracketMatch(char *str)//参数为输入的字符串  
{  
    Stack s,int i,char ch;  
    InitStack(&s);  
    for(i=0;str[i]!='\0';i++)  
    {  
        switch(str[i])  
        {  
            case '(':  
            case '[':  
            case '{':  
                Push(&s,str[i]);  
                break;  
            case ')':  
            case ']':  
            case '}':  
                if(IsEmpty(&s))  
                {  
                    printf("右括号多余");  
                    return;  
                }else  
                {  
                    GetTop(&s,&ch);  
                    if(Match(ch,str[i]))  
                        Pop(&s,&ch);  
                    else  
                        printf("对应的括号不同类");   
                }  www.zzzyk.com
        }  
    }  
    if(IsEmpty(&s))  
        printf("括号匹配");  
    else  
        printf("括号不匹配");  
}  
int main(void)  
{  
    return 0;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,