江湖救急没分了.谢谢帮忙.菜鸟有关问题.
江湖救急..没分了..多谢帮忙..初学者问题..
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //定义栈.....
{
char *top; //栈顶指针......
char *base ; //栈底指针......
int sizestack ; //初始分配大小....
}sqstack ;
char initstack(sqstack *l) //新键栈......
{
l-> base=(char *)malloc(stack_init_size*sizeof(char )) ; //对栈开空间.....
l-> top=l-> base; //使栈为空....
l-> sizestack=stack_init_size; //初始分配大小....
return 1;
}
char push(sqstack *l,int e) //压栈....
{
*(l-> top++)=e; //把e的值给栈顶......
return 1 ;
}
char pop(sqstack *l) //出栈...
{
--l-> top; //....
return 1;
}
char gettop(sqstack *l) //用来返回栈顶元素的。...
{
return *(--l-> top);
}
char partnership(sqstack *l) //进行括号配对....
{
char a[100],*p;
gets(a);
p=a;
while(*p) //用指针p扫描给个元素....
{
if(*p== '( ' || *p== '[ ') //如果扫描的时候有 '( '或 '[ '...就入栈..
push(l,*p);
p++;
}
p=a;
while(*p) //在一次重开始进行扫描....
{
if(gettop(l)== '( ' && *p== ') ' || gettop(l)== '[ ' && *p== '] ')
pop(l);
}
if(l-> top==l-> base)
printf( "配对 ");
else
printf( "不配对 ") ;
return 1;
}
char main()
{
sqstack a;
initstack(&a);
partnership(&a);
return 1;
}
这个一个括号配对的问题。..编译没有错..可能是哪个指针用错了吧..我找不出来错误..请大家帮帮忙啊。.谢谢了....
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //定义栈.....
{
char *top; //栈顶指针......
char *base ; //栈底指针......
int sizestack ; //初始分配大小....
}sqstack ;
void initstack(sqstack *l) //新键栈......
{
l-> base=(char *)malloc(stack_init_size*sizeof(char)) ; //对栈开空间.....
l-> top=l-> base; //使栈为空....
l-> sizestack=stack_init_size; //初始分配大小....
}
void push(sqstack *l,char e) //压栈....
{
*(l-> top++)=e; //把e的值给栈顶......
}
void pop(sqstack *l) //出栈...
{
--l-> top; //....
}
char gettop(sqstack *l) //你返回栈顶写的不对,你l-> top--栈顶就变了
{
char *p=l-> top-1;
return *p;
}
int partnership(sqstack *l) //进行括号配对....
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //定义栈.....
{
char *top; //栈顶指针......
char *base ; //栈底指针......
int sizestack ; //初始分配大小....
}sqstack ;
char initstack(sqstack *l) //新键栈......
{
l-> base=(char *)malloc(stack_init_size*sizeof(char )) ; //对栈开空间.....
l-> top=l-> base; //使栈为空....
l-> sizestack=stack_init_size; //初始分配大小....
return 1;
}
char push(sqstack *l,int e) //压栈....
{
*(l-> top++)=e; //把e的值给栈顶......
return 1 ;
}
char pop(sqstack *l) //出栈...
{
--l-> top; //....
return 1;
}
char gettop(sqstack *l) //用来返回栈顶元素的。...
{
return *(--l-> top);
}
char partnership(sqstack *l) //进行括号配对....
{
char a[100],*p;
gets(a);
p=a;
while(*p) //用指针p扫描给个元素....
{
if(*p== '( ' || *p== '[ ') //如果扫描的时候有 '( '或 '[ '...就入栈..
push(l,*p);
p++;
}
p=a;
while(*p) //在一次重开始进行扫描....
{
if(gettop(l)== '( ' && *p== ') ' || gettop(l)== '[ ' && *p== '] ')
pop(l);
}
if(l-> top==l-> base)
printf( "配对 ");
else
printf( "不配对 ") ;
return 1;
}
char main()
{
sqstack a;
initstack(&a);
partnership(&a);
return 1;
}
这个一个括号配对的问题。..编译没有错..可能是哪个指针用错了吧..我找不出来错误..请大家帮帮忙啊。.谢谢了....
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //定义栈.....
{
char *top; //栈顶指针......
char *base ; //栈底指针......
int sizestack ; //初始分配大小....
}sqstack ;
void initstack(sqstack *l) //新键栈......
{
l-> base=(char *)malloc(stack_init_size*sizeof(char)) ; //对栈开空间.....
l-> top=l-> base; //使栈为空....
l-> sizestack=stack_init_size; //初始分配大小....
}
void push(sqstack *l,char e) //压栈....
{
*(l-> top++)=e; //把e的值给栈顶......
}
void pop(sqstack *l) //出栈...
{
--l-> top; //....
}
char gettop(sqstack *l) //你返回栈顶写的不对,你l-> top--栈顶就变了
{
char *p=l-> top-1;
return *p;
}
int partnership(sqstack *l) //进行括号配对....