数据结构习题-用栈和队列进行回文判断

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
判断依次读入的一个以@为结束符的字母序列,是否为形如\'序列1&序列2\'模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属于该模式的字符序列,而‘1+3&3-1’则不是。要求:要能在tc下运行的源程序。

                                                                                                我自己写了一个,你看看/**********************************用栈和队列进行回文判断输入字符以@结束***********************************/#include <stdio.h>/*定义一个栈*/typedef struct Stack{        int size;        char * Base;        char * Top;}Stack;/*创建一个栈*/void CreateStack(Stack * S,int size){        S -> size = size;        S -> Base = (char *)malloc(size);        S -> Top = S -> Base;}/*推入一个元素*/void Push(Stack * S,char c){        /*栈满了,不能插入了*/        if(S -> Top - S -> Base == S -> size)        {                printf("Stack is full and can\'t push!");                return;        }        else        {                *(++S -> Top) = c;        }}void Pop(Stack * S){        /*栈空了*/        if(S -> Top == S -> Base)        {                printf("Stack is empty!");                return;        }        else        {                S -> Top--;        }}void main(){        Stack S;        int Begin;        char c;        CreateStack(&S,100);        Begin = 0;        while(1)        {                scanf("%c",&c);                if(c == \'@\')                        break;                if(c == \'&\' && !Begin)                {                        Begin = 1;                        continue;                }                if(Begin)                {                        if(*(S.Top) == c)                        {                                Pop(&S);                        }                }                else                        Push(&S,c);        }        if(S.Top == S.Base)        {                printf("ok\\n");        }        else        {                printf("fail\\n");        }        getch();}                                       
提问者对答案的评价:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行