zoukankan      html  css  js  c++  java
  • 老师布置的一道基础的关于栈的操作题

           试写一个算法,识别依次读入的一个以@为结束答的字符序列是否为形如“序列1&序列2”模式字符序列。其中序列1和序列2中都不含字符“&”,且序列2是序列1的逆序列。例如,“a+b&b+a”是属该模式的字符序列,而“1+3&3-1”则不是。(提示:可以先让&序号前的前栈,然后让后面的字符依次与出栈后的元素对比,还是利用了栈先进后出的思想,如果中间每个字符都相同,并且最后栈是空的,而可以说是一个的模式。可以借鉴上面第三步中已经实现的栈和程序,在上面添加一个判断函数,通过主函数调用完成)

    #include <stdio.h>
    #include <string.h>
    typedef char ElemType;
    #define MaxSize 100
    typedef struct
    {
    	ElemType data[MaxSize];
    	int top;
    } STACK;
    void InitStack(STACK *s)
    {
    	s->top=-1;
    }
    int Push(STACK *S, ElemType x)
    {
    	if (S->top==MaxSize -1){
    		printf("\n Stack is full!");
    		return 0;
    	}
    
    		S->top++;
    		S->data[S->top]=x;
    		return 1;
    
    }
    int Empty(STACK *S)
    {
    		return(S->top==-1?1:0);
    }
    int Pop(STACK *S,ElemType *x)
    {
    	if (Empty(S))
    		return 0;
    
    		*x=S->data[S->top];
    		S->top--;
    		return 1;
    
    }
    int GetTop(STACK *S,ElemType *x)
    {
    	if (Empty(S))
    		return 0;
    
    		*x=S->data[S->top];
    		return 1;
    
    }
    
    void main()
    {
    	int i,j,len;
    	STACK st;
    	ElemType e,a[MaxSize];
    	printf("输入一段字符串以@结束,并判断是否形如“序列1&序列2”且序列2是序列1的逆序列\n");
    	while(1)//死循环,使多次输入
    	{
    	InitStack(&st);
    	gets(a);
    	len=strlen(a);
    	for(i=0;;i++)
    	{
    		if(a[i]=='&'||a[i]=='@')
    			break;
    		else
    			Push(&st,a[i]);
    	}
    	if((len-2)!=2*i)/*判断字符串在&左右的序列是否长度相同,若不同直接输出不是*/
        {printf("不是\n");continue;}
    	for(i++;;i++)
    	{
    		if(a[i]=='@')
    			break;
    		else
    		{
    		GetTop(&st,&e);
    		if(e!=a[i])
    			break;
    		else
    			Pop(&st,&e);
    		}
    	}
    	if(Empty(&st))
    		printf("是\n");
    	else
    		printf("不是\n");
    }
    }


  • 相关阅读:
    Python学习---IO的异步[tornado模块]
    Python学习---IO的异步[twisted模块]
    Python学习---IO的异步[gevent+Grequests模块]
    Python学习---IO的异步[asyncio +aiohttp模块]
    Python学习---IO的异步[asyncio模块(no-http)]
    Python学习---Python的异步IO[all]
    Python学习---爬虫学习[scrapy框架初识]
    Python学习---Django关于POST的请求解析源码分析
    Python学习---爬虫学习[requests模块]180411
    Python实例---CRM管理系统分析180331
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082173.html
Copyright © 2011-2022 走看看