⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 习题2-括号配对检查.c

📁 数据结构各章实验源代码; 数据结构实验源代码
💻 C
字号:
#include  "datastru.h"
#include  <stdio.h>

void initstack(SEQSTACK *s)
 /*顺序栈初始化*/
{  s->top = 0; }

int push(SEQSTACK *s, DATATYPE1 x)
 {/*元素x入栈*/
  if(s->top == MAXSIZE - 1)
    {printf("栈满\n");    return 0;}
    else
    {s->top++;  (s->data)[s->top] = x;   return 1;}
 }

DATATYPE1 pop(SEQSTACK *s)
 {/*返回栈顶元素并删除栈顶元素*/
DATATYPE1  x;
  
  if(s->top == 0)
   {printf("栈空\n");    x = 0;}
  else
   {x = (s->data)[s->top];   s->top--;}
  return  x;
 }

DATATYPE1 gettop(SEQSTACK *s)
 {/*返回栈顶元素*/
DATATYPE1  x;
  
 if(s->top == 0)
     {printf("栈空\n");   x = 0;}
 else
    x = (s->data)[s->top];
 return x;
 }

check(SEQSTACK *s)
{
	int bool;
	char ch;

	push(s,'#');
	printf("\n请输入一串括号,回车键结束 :");
	ch = getchar();
	bool = 1;
	while(ch != '\n' && bool)
	  { if(ch == '(')
	       push(s,ch);                         /*遇到左括号,左括号入栈*/                    
	    if(ch == ')')                          /*遇到右括号时处理如下:*/   
       		  if(gettop(s) == '#')  bool = 0;  /*(1)栈顶元素为#号,配对错误*/
		      else    pop(s);              /*(2)栈顶元素为左括号,消括号*/
	       ch = getchar();}                    /*继续处理*/
	if(gettop(s) != '#')
	   bool = 0;
	if(bool)
	   printf("\n括号配对正确\n");
	else
	   printf("\n括号配对错误\n");
}

main()
{
   SEQSTACK st, *s;

   s = &st;
   initstack(s);
   check(s);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -