@数据结构C/C++版(7)《栈的链式存储结构实现括号匹配问题》
括号满足成对存在则匹配成功,这个处理过程恰巧和栈的特点吻合。在算法中每读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消解,或者不合法的情况;若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中所有未消解的期待的急迫性都降了一级。另外在开始和结束时,栈都应该是空的。
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
char data;
struct LNode* next;
}LNode,*LinkStack;
void InitLinkStack(LinkStack &S_top){
//创建链栈顶结点
S_top=(LNode*)malloc(sizeof(LNode));
S_top=NULL;
printf("栈创建成功\n");
}
void Push(LinkStack &S_top,char e){
//从栈顶压入元素
LinkStack q=(LNode*)malloc(sizeof(LNode));
q->data=e;
q->next=S_top;
S_top