数据结构相关复习---链栈,顺序栈,括号匹配算法
顺序栈[cpp]
#include<stdio.h>
//初始化栈[顺序栈]
void initStack(SeqStack * s)
{
s->top=-1;
}
//进栈
int push(SeqStack *s,StackElementType x)
{
if(s->top == Stack_size-1)
{
return false;
}
s->top++;
s->elem[s->top]=x;
return true;
}
//出栈
int Pop(SeqStack *s,StackElementType *x)
{
if(s->top==-1)
{
return false;
}else
{
*x=s->elem[s->top];
s->top--;
return true;
}
}
//取栈顶元素
int GetTop(SeqStack *s,StackElementType *x)
{
if(s->top==-1)
{
return false;
}else
{
*x=s->elem[s->s->top];
return true;
}
}
int main(void)
{
return 0;
}
链栈
[cpp]
#include<stdio.h>
typedef struct node
{
StackElementType data;
struct node *next;
}LinkStackNode;
typedef LinkStackNode * LinkStack;
//进栈【链栈】
int push(SeqStack top,StackElementType x)
{
LinkStackNode * temp;
temp = (LinkStackNode)malloc(sizeof(LinkStackNode));
if(temp==NULL)//申请空间失败
return false;
temp->data=x;
temp->next=top->next;
top->next=temp;
return true;
}
//出栈【链栈】
int Pop(SeqStack top,StackElementType *x)
{
LinkStackNode * temp;
temp=top->next;
if(temp==NULL)//栈为空
return false;
top->next=temp->next;
*x=temp->data;
free(temp);
return true;
}
int main(void)
{
return 0;
}
括号匹配算法
[cpp]
#include<stdio.h>
//括号匹配算法
void BracketMatch(char *str)//参数为输入的字符串
{
Stack s,int i,char ch;
InitStack(&s);
for(i=0;str[i]!='\0';i++)
{
switch(str[i])
{
case '(':
case '[':
case '{':
Push(&s,str[i]);
break;
case ')':
case ']':
case '}':
if(IsEmpty(&s))
{
printf("右括号多余");
return;
}else
{
GetTop(&s,&ch);
if(Match(ch,str[i]))
Pop(&s,&ch);
else
printf("对应的括号不同类");
} www.zzzyk.com
}
}
if(IsEmpty(&s))
printf("括号匹配");
else
printf("括号不匹配");
}
int main(void)
{
return 0;
}
补充:软件开发 , C++ ,