#include<stdio.h>
//#include<string.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct{
char *base;
char *top;
int stacksize;
}SqStack;
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front; //队头指针
QueuePtr rear; //队尾指针
}LinkQueue;
Status InitStack(SqStack &s){
s.base=(char *)malloc(STACK_INIT_SIZE * sizeof(char));
if(!s.base)
return 0;
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return 0;
}
bool IsStackEmpty(SqStack &s)
{
if(s.top==NULL)
return 1;
else return 0;
}
void Push(SqStack &s, char e)
{
if(s.top -s.base >= s.stacksize)
{
s.base = (int *)realloc(s.base, (s.stacksize + STACKINCREMENT) * sizeof(int));
s.top = s.base + s.stacksize;
s.stacksize += STACKINCREMENT;
}
*(s.top++) = e;
}
void Pop(SqStack &s, char &e)
{
if(s.top != s.base)
{
e = *(–s.top);
}
}
Status InitQueue(LinkQueue &Q)
//构造一个空队列Q
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof (QNode));
if(!Q.front)
return 0;
Q.front->next=NULL;
return 1;
}
Status IsEnQueue (LinkQueue&Q,QElemType e)
//插入元素e为Q的新的队尾元素
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof (QNode));
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return 1;
}
Status DeQueue (LinkQueue &Q,QElemType &e)
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;
//否则返回ERROR
{
QueuePtr p;
if(Q.front==Q.rear)
return 0;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
return 1;
}
bool IsQueueEmpty(LinkQueue Q)
//若队列Q为空队列,则返回TRUE,否则返回FALSE
{
if(Q.rear==Q.front)
return 0;
else
return 1;
}
int main()
{
SqStack s,temp;
LinkQueue Q;
InitQueue(Q);
int k=0,i;
char c,cc[100],e,a,d;
while(scanf(“%c”,&c)!=Eof)
{
if(c==’#')
break;
else {
cc[k]=c;
k++;
}
}
InitStack(s);
InitStack(temp);
for(i=k-1;i>=0;i–)
{
Push(s,cc);
}
while(IsStackEmpty(s))//在栈不为空的情况下
{
Pop(s,e);
if(e==’B')
InStack(B,temp);
else
if(e==’(‘)//如果为右括号,则输出括号中所有内容
{
while(Pop(s,e)&&e!=’)')//当为左括号时停止
{
if(e!=’)')
EnQueue (Q,e);
}
DeQueue (Q,a);//读出队列中第一个元素
while(IsQueueEmpty(Q))
{
DeQueue (Q,d);//取出元素
Push(temp,a);
Push(temp,d);
}
Push(temp,a);//再次压入第一个元素
// Pop(s,e);//去掉左括号
}
}
printf(“\n解释的结果为: “);
while(IsStackEmpty(temp))//在栈不为空的情况下
{
Pop(temp,a);
if(a==’A')
printf(“sae”);
else
printf(“%c”,a);
}
printf(“\n”);
return 0;
}
>> 本文固定链接: http://www.vcgood.com/archives/3447
求 c语言软件工程师
要求:熟悉c语言,熟悉vc++开发环境,了解手机游戏和windows平台,熟悉常用算法的使用,了解游戏框架,了解手机中间件游戏开发更佳,没有相
关经验的,如果有c语言基础,人品端正,公司考虑培养。
工作内容:根据产品策划需求进行手机游戏开发、移植,协同合作完成公司的分配的任务。
联系方式:021-64701418
上海掌游信息技术有限公司是一家快速发展的公司,目前我们已经开发出斗地主、极品赛车、三国战纪等二十多款成熟的mtk手机中间件游戏,目前正
在将产品延伸到其他手机平台和PC平台。现在我们正在扩大手机游戏开发团队,如果您有足够的热情和创造力欢迎加入和我们团队共同发展,有兴趣
请将简历发送至:eva.deng@zyjoy.net,我们会尽快联系您!