2009-08-27 15:51:51 iteye_2037 阅读数 49
  • JavaWeb实战开发

    本课程详细讲解了以下内容:     1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程     2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例     3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题      4.session与cookie问题及application、cookie补充说明及四种范围对象作用域      5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别      6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据      7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)      8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析      9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)     1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)      11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet      12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题      13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove      14.过滤器、过滤器通配符、过滤器链、监听器      15.session绑定解绑、钝化活化      16.以及Ajax的各种应用      17. Idea环境下的Java Web开发

    3707 人正在学习 去看看 颜群

假设表达式中包含两种括号:圆括号和方括号,其嵌套顺序随意,即([]())或[([])]等为正确的格式,[()]或([()]或(())均为不正确的格式。检验括号是否匹配可以用堆栈来实现当遇到 ( 或[ 时进栈,遇到 ] 或 ] 时出栈进行匹配检验,如果出现不匹配的情况立即束,否则继续取下一个字符。如果没有遇到不匹配的情况,最后判断栈是否为空,栈为空,括号匹配,否则不匹配。

 

源代码:

#define STACKINCREAMENT      10
#define STACK_INIT_SIZE       100
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int status ;
typedef char SElemtype;
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
typedef struct
{
SElemtype *base;
SElemtype *top;
status stacksize;
}sqstack;


status Init(sqstack *s)
{
s->base=(SElemtype *)malloc(STACK_INIT_SIZE*
sizeof(SElemtype));
if(!s->base) exit(OVERFLOW);
s->top=s->base;
s->stacksize=STACK_INIT_SIZE ;
return OK;
}


status Gettop(sqstack *s,SElemtype e)
{
if(s->top==s->base) return ERROR;
e=*(s->top-1);
return OK;
}


status push(sqstack *s,SElemtype e)
{
if(s->top-s->base>=s->stacksize)
{
      
s->base=(SElemtype *)realloc(s->base,
(s->stacksize+
STACKINCREAMENT)*sizeof(SElemtype));
if(!s->base)exit(OVERFLOW);
      s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREAMENT;
}
*s->top++=e;
return OK;
}


status pop(sqstack *s,SElemtype *e)
{if(s->top==s->base) return ERROR;
*e=*--s->top;
return OK;
}


status stackempty(sqstack *s)
{if(s->top==s->base)
return OK;
return ERROR;
}


status clearstack(sqstack *s)
{
if(s->top==s->base) return ERROR;
s->top=s->base;
return OK;
}

status Parenthesis_match(sqstack *s,char *str)
{int i=0,flag=0;
SElemtype e;
while(str[i]!='\0')
{
switch(str[i])
{
case '(':  push(s,str[i]);break;
case '[':  push(s,str[i]);break;
case ')':  {pop(s,&e); if(e!='(')   flag=1;}  break;
case ']':  {pop(s,&e); if(e!='[')   flag=1;}  break;
default:break;
}
if(flag)break;
i++;
}
   if(!flag&&stackempty(s))
   printf(" Parenthesis is match!\n");
   else
   printf(" Parenthesis isn't match!\n");
   return OK;
}


void main()
{
char str[100],enter;
sqstack s;
Init(&s);
printf("input string chars:");
scanf("%s",str);
scanf("%c",&enter);
Parenthesis_match(&s,str);
     getch();
}

 

2015-10-21 13:50:49 CrazyCat8023 阅读数 464
  • JavaWeb实战开发

    本课程详细讲解了以下内容:     1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程     2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例     3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题      4.session与cookie问题及application、cookie补充说明及四种范围对象作用域      5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别      6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据      7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)      8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析      9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)     1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)      11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet      12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题      13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove      14.过滤器、过滤器通配符、过滤器链、监听器      15.session绑定解绑、钝化活化      16.以及Ajax的各种应用      17. Idea环境下的Java Web开发

    3707 人正在学习 去看看 颜群
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string>
#include <queue>
#include <set>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
#define dx 100
#define zl 10
int bz[3][3]={1,0,0,0,1,0,0,0,1};
typedef struct LNode
{
    char *base;
    char *top;
	int stacksize; 
}sqstack;
int Init(sqstack &S) //开辟栈空间    
{   
    S.base=(char *)malloc(dx*sizeof(char));
    if(!S.base)  return -2;
    S.top=S.base;
    S.stacksize=dx;
    return 1;
}
int StackEmpty(sqstack &S) //检测栈是否为空 
{ 
    if(S.top==S.base)  return 1;
    return 0;
}
int Push(sqstack &S,char e) //入栈 
{ 
    if(S.top-S.base>=S.stacksize)
    {
    	S.base=(char *)realloc(S.base,(S.stacksize+zl)*sizeof(char));
    	if(!S.base)  return -2;
    	S.top=S.base+S.stacksize;
    	S.stacksize+=zl;
    }
    *S.top++=e;
    return 1;
}
int  Pop(sqstack &S)//删除栈顶元素 
{ 
    if(S.top==S.base)  return -1;
    --S.top;          return 1;
}
int Top(sqstack &S,char &e)//访问栈顶元素 
{
    if(S.top==S.base)  return -1;
    e=*(S.top-1);      return 1;
}
int is_PP(char s1,char s2)//检查括号是否匹配 
{
	string str1="[({";
	string str2="])}";
	return bz[str1.find(s1)][str2.find(s2)];
}
int is_FX(char c)//检查括号的方向 
{
	if(c=='['||c=='('||c=='{')   return 1;
	else                         return 0;
} 
void is_empty(sqstack &S)//清空栈 
{
	if(S.top!=S.base)
	    S.top=S.base;
}
int main()
{
	char s[105],e;
	sqstack S; Init(S);
	while(cin>>s)
	{
	   int flag=0;
	   for(int i=0;s[i]!='\0';i++)
	   {
		  if(is_FX(s[i]))  Push(S,s[i]);
		  else     
		  {
			if(StackEmpty(S))  
		    {
			   cout<<"0"<<endl;
			   flag=1;
			   break;
			}
			else
			{
			    Top(S,e);
				if(is_PP(e,s[i]))
				{
					Pop(S);
				}
				else
				{
					cout<<"0"<<endl;
			        flag=1;
			        break;
				}
			}
		  }
	   }
	  if(flag==0)
	  {
	    if(StackEmpty(S)) cout<<"1"<<endl;
	    else             cout<<"0"<<endl;
	  }
	  is_empty(S);
    }
    return 0;
}

2018-08-05 03:32:42 qq_40711025 阅读数 147
  • JavaWeb实战开发

    本课程详细讲解了以下内容:     1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程     2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例     3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题      4.session与cookie问题及application、cookie补充说明及四种范围对象作用域      5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别      6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据      7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)      8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析      9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)     1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)      11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet      12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题      13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove      14.过滤器、过滤器通配符、过滤器链、监听器      15.session绑定解绑、钝化活化      16.以及Ajax的各种应用      17. Idea环境下的Java Web开发

    3707 人正在学习 去看看 颜群

描述

现在,有一行括号序列,请你检查这行括号是否配对。

输入

第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符

输出

每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No

样例输入

3
[(])
(])
([[]()])

样例输出

No
No
Yes

算法实现 

#include <stdio.h>

int main()
{
    int n,i,j,pair;
    scanf("%d",&n);
    getchar();
    char s[n][10000],bracket[10000];
    
    for (i=0; i<n; i++) {
        gets(s[i]);
    }
    for (i=0; i<n; i++) {
        bracket[0]='\0';
        pair=0;
        j=0;
        
        while (s[i][j]) {
            if (s[i][j]=='('||s[i][j]=='[') {
                bracket[pair]=s[i][j];
                pair++;
            } else if(
                      (s[i][j]==')'&&bracket[pair-1]=='(')||(s[i][j]==']'&&bracket[pair-1]=='[')
                      ) {
                pair--;
            } else {
                pair=1;
                break;
            }
            j++;
        }
        if (pair) {
            printf("No\n");
        } else {
            printf("Yes\n");
        }
    }
    
    return 0;
}

 

2007-06-08 13:14:00 lijuwen 阅读数 4674
  • JavaWeb实战开发

    本课程详细讲解了以下内容:     1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程     2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例     3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题      4.session与cookie问题及application、cookie补充说明及四种范围对象作用域      5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别      6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据      7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)      8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析      9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)     1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)      11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet      12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题      13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove      14.过滤器、过滤器通配符、过滤器链、监听器      15.session绑定解绑、钝化活化      16.以及Ajax的各种应用      17. Idea环境下的Java Web开发

    3707 人正在学习 去看看 颜群

 代码如下:

注意:

1、把此段代码添加到“数据结构(严蔚敏)顺序栈” 就可以了

2、把“数据结构(严蔚敏)顺序栈”的定义SElemType改成下面的

       typedef char SElemType就可以了

 

void check()
 { /* 对于输入的任意一个字符串,检验括号是否配对 */
   SqStack s;
   SElemType ch[80],*p,e;
   if(InitStack(&s)) /* 初始化栈成功 */
   {
     printf("请输入表达式/n");
     gets(ch);
     p=ch;
     while(*p) /* 没到串尾 */
       switch(*p)
       {
         case '(':
         case '[':Push(&s,*p++);
                  break; /* 左括号入栈,且p++ */
         case ')':
         case ']':if(!StackEmpty(s)) /* 栈不空 */
                  {
                    Pop(&s,&e); /* 弹出栈顶元素 */
                    if(*p==')'&&e!='('||*p==']'&&e!='[') /* 弹出的栈顶元素与*p不配对 */
                    {
                      printf("左右括号不配对/n");
                      exit(ERROR);
                    }
                    else
                    {
                      p++;
                      break; /* 跳出switch语句 */
                    }
                  }
                  else /* 栈空 */
                  {
                    printf("缺乏左括号/n");
                    exit(ERROR);
                  }
         default: p++; /* 其它字符不处理,指针向后移 */
       }
       if(StackEmpty(s)) /* 字符串结束时栈空 */
         printf("括号匹配/n");
       else
         printf("缺乏右括号/n");
   }
 } 

2017-09-28 23:10:20 gx17864373822 阅读数 582
  • JavaWeb实战开发

    本课程详细讲解了以下内容:     1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程     2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例     3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题      4.session与cookie问题及application、cookie补充说明及四种范围对象作用域      5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别      6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据      7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)      8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析      9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)     1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)      11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet      12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题      13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove      14.过滤器、过滤器通配符、过滤器链、监听器      15.session绑定解绑、钝化活化      16.以及Ajax的各种应用      17. Idea环境下的Java Web开发

    3707 人正在学习 去看看 颜群

数据结构实验之栈与队列四:括号匹配

Problem Description
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

Input
输入数据有多组,处理到文件结束。

Output
如果匹配就输出“yes”,不匹配输出“no”

Example Input
sin(20+10)
{[}]
Example Output
yes
no

思路:遇到左括号均进栈,右括号进行判断
不匹配有三种情况:1.右括号与左括号不匹配 2.右括号多余(栈空了) 3. 左括号多余(栈非空)

#include <stdio.h>
#include <stdlib.h>
#define stackmax 100000
#define stacknum 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
typedef int status;
typedef char selemtype;
typedef struct
{
    selemtype *base;
    selemtype *top;
    int stacksize;
} sqstack;
int inistack(sqstack &S)
{
    S.base=new selemtype[stackmax];
    if(!S.base)
        exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=stackmax;
    return OK;
}
int push(sqstack &S, selemtype e)
{
    if(S.top-S.base>=S.stacksize)
    {
        S.base=(selemtype *)realloc(S.base,(S.stacksize+stacknum)*sizeof(selemtype));
        if(!S.base)
            exit(OVERFLOW);
        S.top=S.base+S.stacksize;
        S.stacksize+=stacknum;
    }
    *S.top=e;
    S.top++;
    return 0;
}
int pop(sqstack &S, selemtype &e)
{
    if(S.base==S.top)
        return ERROR;
    else
        e=*--S.top;
    return OK;
}
status isempty(sqstack S)
{
    if(S.base==S.top)
        return TRUE;
    else
        return FALSE;
}
int main()
{
    char s[55];
    selemtype e;
    while(gets(s))//多组输入字符串
    {
        sqstack S;
        inistack(S);//多组,每组都要初始化栈
        int i;
        int flag=1;
        for(i=0;s[i]!='\0';i++)//遍历字符串!!啊!s[i]!='\0'
        {
            if(s[i]=='('||s[i]=='{'||s[i]=='[')
                push(S,s[i]);
            else if(s[i]==')')
            {
                if(isempty(S))//空栈代表右括号多余
                {
                    flag=0;
                    break;
                }
                else
                {
                    pop(S,e);
                    if(e!='(')
                    {
                        flag=0;
                        break;
                    }
                }

            }
            else if(s[i]=='}')
            {
                if(isempty(S))//空栈代表右括号多余
                {
                    flag=0;
                    break;
                }
                else
                {
                    pop(S,e);
                    if(e!='{')
                    {
                        flag=0;
                        break;
                    }
                }

            }
            else if(s[i]==']')
            {
                if(isempty(S))//空栈代表右括号多余
                {
                    flag=0;
                    break;
                }
                else
                {
                    pop(S,e);
                    if(e!='[')
                    {
                        flag=0;
                        break;
                    }
                }

            }

        }
        if(!isempty(S))//遍历完毕后,若栈非空:左括号多余
        {
            flag=0;//此处如果加 break,不对!break只能加在循环里!
        }
        if(flag)
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}
没有更多推荐了,返回首页