首先先定义一个结构体
struct stack { char data; stack *link; };初始化结构栈指针
void InitStack(stack *&L) { L = NULL; }将一个数据进栈
void stackPush(stack *&L) { char ch; while((ch=getchar()) != '\n') { stack *p = new stack; //申请内存 p->data = ch; p->link = L ; L=p; } }退栈并返回一个数据 (方便后面的对退栈数据的判断)
char stackPop(stack *&L) { char da; stack* q=L;//保留L此时的结点 da = L->data; L=L->link; delete q;//释放结点q return da; }显示函数 (此步骤只是为了方便后面的调试,并无用处)
void displayStack(stack *&L) { stack *p=L; while(p) { cout << p->data << " "; p =p->link; } }下面为主函数
#include <iostream> struct stack { char data; stack *link; }; using namespace std; void InitStack(stack *&L); //初始化栈 void stackPush(stack *&L); //进栈 void displayStack(stack *&L); //显示数据 char stackPop(stack *&L); //出栈 int main() { stack *L; int flag = 0; char da; InitStack(L); stackPush(L); displayStack(L); cout << endl; while (L) { da= stackPop(L); if(da == ')') flag++; else if(da =='(') flag--; if (flag<0) break; } if (!L && flag == 0) { cout << "配对"; } else cout << "不配对"; while(1); return 0; } void InitStack(stack *&L) { L = NULL; } void stackPush(stack *&L) { char ch; while((ch=getchar()) != '\n') { stack *p = new stack; p->data = ch; p->link = L ; L=p; } } char stackPop(stack *&L) { char da; stack* q=L;// da = L->data; L=L->link;// delete q;//释放结点q return da; } void displayStack(stack *&L) { stack *p=L; while(p) { cout << p->data << " "; p =p->link; } }