c语言编写程序从键盘接收字符串(最大长度为100),测试字符串中的括号()、[ ]、{}是否匹配。 要求使用堆栈,且堆栈的基本操作使用链栈实现
时间: 2024-05-24 16:11:32 浏览: 15
#include <stdio.h>
#include <stdlib.h>
//定义链栈结构体
typedef struct StackNode{
char data;
struct StackNode *next;
}StackNode, *LinkStackPtr;
typedef struct LinkStack{
LinkStackPtr top;
int count;
}LinkStack;
//链栈初始化
void InitStack(LinkStack *S){
S->top = NULL;
S->count = 0;
}
//链栈判空
int StackEmpty(LinkStack *S){
return S->top == NULL;
}
//链栈入栈
void Push(LinkStack *S, char c){
LinkStackPtr p;
p = (LinkStackPtr)malloc(sizeof(StackNode));
p->data = c;
p->next = S->top;
S->top = p;
S->count++;
}
//链栈出栈
void Pop(LinkStack *S, char *c){
LinkStackPtr p;
if(StackEmpty(S)){
printf("Stack is empty!\n");
return;
}
*c = S->top->data;
p = S->top;
S->top = S->top->next;
S->count--;
free(p);
}
//链栈取栈顶元素
void GetTop(LinkStack *S, char *c){
if(StackEmpty(S)){
printf("Stack is empty!\n");
return;
}
*c = S->top->data;
}
//主函数
int main(){
LinkStack S;
InitStack(&S);
char str[101];
printf("Please input a string (max length 100):");
fgets(str, 101, stdin);
int i = 0;
char ch, tmp;
while(str[i] != '\0' && str[i] != '\n'){
ch = str[i];
switch(ch){
case '(':
case '[':
case '{':
Push(&S, ch);
break;
case ')':
if(StackEmpty(&S)){
printf("Not match!\n");
return 0;
}
Pop(&S, &tmp);
if(tmp != '('){
printf("Not match!\n");
return 0;
}
break;
case ']':
if(StackEmpty(&S)){
printf("Not match!\n");
return 0;
}
Pop(&S, &tmp);
if(tmp != '['){
printf("Not match!\n");
return 0;
}
break;
case '}':
if(StackEmpty(&S)){
printf("Not match!\n");
return 0;
}
Pop(&S, &tmp);
if(tmp != '{'){
printf("Not match!\n");
return 0;
}
break;
default:
break;
}
i++;
}
if(StackEmpty(&S)){
printf("Match!\n");
}
else{
printf("Not match!\n");
}
return 0;
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)