① 用c語言如何實現判斷圓括弧是否配對
如果只有圓括弧(沒有[ ] 或 { }),不需要構造一個棧。因為用棧實現時,棧里裝的都是一模一樣的左括弧 '(' ,因此我們只需定義一個 整型變數 來記錄 棧中元素的個數 即可。具體代碼如下:
#include <stdio.h>
int main (void)
{
char input = 0;
int num = 0; /* 不用棧,只記錄棧中元素的個數,初始化為0 */
while (1 == scanf ("%c", &input)) /* 讀入字元串,每次讀一個字元存入 input 中 */
{
if ('(' == input)
{
++num; /* 相當於把左括弧壓棧 */
}
if (')' == input)
{
--num; /* 相當於遇到右括弧時彈棧 */
}
if (0 > num)
{
printf ("括弧不匹配\n");
return 0;
}
}
if (0 == num) /* 讀完字元串後判斷「棧」是否為空 */
{
printf ("括弧匹配\n");
}
else
{
printf ("括弧不匹配\n");
}
return 0;
}
② c語言判斷一字元串左右括弧是否匹配的問題!求助
由於沒有分配空間,,,修改如下
#include
#include
#include
//
!!!分配內存頭文件
#define
m
20
typedef
char
ElemType;
typedef
struct
{
ElemType
stack[m];
int
top;
}stacknode;
stacknode
*sp;
Init(stacknode
*st)
{
st->top=0;
return
0;
}
void
Push(stacknode
*st,ElemType
x)
{
if(st->top==m)
printf("The
stack
is
overflow!\n");
else
{
st->top=st->top+1;
st->stack[st->top]=x;
}
}
void
Pop(stacknode
*st)
{
st->top=st->top-1;
}
main()
{
char
s[m];
int
i;
printf("Creat
a
stack!\n");
sp
=
(stacknode
*)malloc(sizeof(stacknode));
//
!!!添加的語句
Init(sp);
printf("Input
a
expression:\n");
gets(s);
for(i=0;i
top==0)
printf("左右括弧是匹配的!\n");
else
printf("左右括弧是不匹配的!\n");
}