C语言,中缀表达式转后缀表达式?
#include
#include
#include
#define MaxSize 32
typedef char Qelemtype;
typedef struct
{
Qelemtype *base; //指向队列的存储空间;
int front; //指向队头元素;
int rear; //指向队尾元素的下一位置;
}SqQueue;
typedef struct LNode
{
int data;
struct LNode *next;
}Snode,*LinkStack;
void DestroyLinStack(LinkStack &S)
{//销毁链栈S。
Li...全部
#include
#include
#include
#define MaxSize 32
typedef char Qelemtype;
typedef struct
{
Qelemtype *base; //指向队列的存储空间;
int front; //指向队头元素;
int rear; //指向队尾元素的下一位置;
}SqQueue;
typedef struct LNode
{
int data;
struct LNode *next;
}Snode,*LinkStack;
void DestroyLinStack(LinkStack &S)
{//销毁链栈S。
LinkStack temp=S,p;
while(temp)
{
p=temp;
temp=temp->next;
free(p);
}
}
void Push(LinkStack &S, char x)
{//入栈。
LinkStack temp=(LinkStack )malloc(sizeof(Snode ));
temp->data=x;
temp->next=S->next;
S->next=temp;
}
void Pop(LinkStack &S, char &x)
{//出栈。
LinkStack temp=S->next;
x=temp->data;
S->next=temp->next;
free(temp);
}
int GetTop(LinkStack &S)
{//读栈顶元素。
int x;
if(S->next)
x=S->next->data;
else
coutnext=0;
}
int InitQueue(SqQueue &Q)
{//队列的初始化;
ont= ar=0;
se=(Qelemtype *)malloc(MaxSize*sizeof(Qelemtype));
if(! se)
exit(1);
se[ ont]='\0';
return 1;
}
int QueueLength(SqQueue Q)
{//计算队列的长度;
return ( ont+MaxSize)%MaxSize;
}
void EnQueue(SqQueue &Q, Qelemtype x)
{//入队;
if(QueueLength(Q)==MaxSize)
{
coutnext==0);
}
int Priority(char oper)
{
switch(oper)
{
case '(':
return 0;
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
}
}
void convertpostexp(char *str,SqQueue &post)
{
char c,t;
int i=0,k=strlen(str);
LinkStack S;
Initstack(S);
Push(S,'(');
InitQueue(post);
while(i>str;
convertpostexp(str,post);
cout<<"转换成后缀表达式是:"< 收起