用栈实现括号匹配的检验 两例C代码
(2008-10-31 19:31:42)
标签:
c语言turboc2.0环境实现c语言编程it |
分类: 数据结构C语言版编程实例 |
实验四:用栈检测括号的匹配(2学时)
本次实验的主要目的在于使学生深入了解栈的特性,以便在实际问题背景下灵活运用;同时还将巩固对这种结构的构造方法的理解。
(一)
括号匹配问题是编译程序时经常遇到的问题,用以检测语法是否有错。
(二)
1.
2.
(三)
自拟。务必涵盖以下情况:
1.个数不对,如(
2.
3.匹配不符,如(
(四)
若为左半边括号则压栈,若为右半边括号,则与栈顶位置的括号比较是否匹配,若栈空,则表示一种不匹配的情况,若栈不空,则令栈顶元素出栈,若配不上,为不匹配的另一种情况;全部序列检测完毕后,看栈是否为空,若是,则匹配,否则,为不匹配的第三种情况。可设一标志变量flag,初值为true,若出现不匹配情况,令flag=false,最后对flag做一次检测,判断括号是否匹配。
本文代码在turbo C 2.0的环境下实现
用栈实现括号匹配的检验
//实验四:用栈实现括号匹配的检验
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW
-2
#define NULL 0
typedef int
Status;
#define STACK_INIT_SIZE
100
#define STACKINCREMENT 10
typedef char SElemType;
typedef struct{
}SqStack;
Status InitStack(SqStack *s)
{s->base=(SElemType *)malloc(STACK_INIT_SIZE
*sizeof(SElemType));
}
Status Push(SqStack *s,SElemType e)
{if(s->top-s->base>s->stacksize){
}
Status Pop(SqStack *s,SElemType *e){
}
SElemType GetTop(SqStack S)
{SElemType e;
}
Status StackEmpty(SqStack *s)
{
}
Status DestroyStack(SqStack *s)
{
}
Status ClearStack(SqStack *s)
{s->top=s->base;
}
main()
{
}
代码二
//kuohao pipei de jianyan
#include<stdio.h>
#define OVERFLOW -1
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define NULL 0
typedef char SElemType;
typedef int
typedef struct
{
}SqStack;
Status InitStack(SqStack *S)
{
}
Status DestroyStack(SqStack
*S)
{
}
Status StackEmpty(SqStack *S)
{
}
Status Push(SqStack *S,SElemType
e)
{
}
Status Pop(SqStack *S,SElemType
*e)
{
}
main()
{
}