我是靠谱客的博主 如意豆芽,最近开发中收集的这篇文章主要介绍试写一个算法,识别依次读入的一个以“@”为结束符的字符序列是否为形如“序列1&序列2”模式的字符序列。其中序列1和序列2都不含字符“&”,且序列2是序列1的逆序列。例如,“a+b&b+a”是属该模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

由于题目要求,此篇文章用的是纯c写的…
已经一年半没有写c的我一口老血喷出来…

【问题描述】
试写一个算法,识别依次读入的一个以“@”为结束符的字符序列是否为形如“序列1&序列2”模式的字符序列。其中序列1和序列2都不含字符“&”,且序列2是序列1的逆序列。例如,“a+b&b+a”是属该模式的字符序列,而“1+3&3-1”则不是。

【输入形式】
以@为结尾的一串字符

【输出形式】
若符合模式则输出字符串长度,否则输出no

【样例输入】
a+b&b+a@

【样例输出】
3

#include<stdio.h>
#include<malloc.h>
#define STACK 100
#define STACKINCRMENT 10
//顺序栈
typedef char ElementType;
typedef struct SqStack{
ElementType *base;//在栈构造之前和销毁之后,base的值为NULL 
ElementType *top;//栈顶指针 
int stacksize;//当前已分配的存储空间,以元素为单位 
}SqStack;
void InitStack(SqStack *S){
S->base=(ElementType*)malloc(STACK*sizeof(ElementType));
if(!S->base) printf("分配存储空间失败");
S->top=S->base;
S->stacksize=STACK;
//return true;
}
void Push(SqStack *S,ElementType e){
if(S->top-S->base>=S->stacksize){
S->base=(ElementType*)realloc(S->base,(S->stacksize+STACKINCRMENT)*sizeof(ElementType));
if(!S->base) printf("空间不足");
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCRMENT;
}
*S->top++ = e;
}
ElementType Pop(SqStack *S){
ElementType e;
if(S->top!=S->base) {
e= *--S->top;
return e;
}
}
int main(){
SqStack S;
ElementType e,p;
int flag=0,length=0;
InitStack(&S);
scanf("%c",&e);
while(e!='&'&&flag==0){
Push(&S,e);
length++;
scanf("%c",&e);;
}
if(e=='&') flag=1;
if(flag==1){
scanf("%c",&e);
while(e!='@'&&S.top!=S.base){
p=Pop(&S);
if(e!=p) {
printf("no");
return 0;
}
else scanf("%c",&e);;
}
}
printf("%d",length);
}

这个题目让我写到崩溃…
1.首先,主函数中的S不能定义为结构体指针,如果写成了指针,要先进行初始化,让他指向一个结构体(即:结构体指针是指向结构体的指针!!!)!!!!!而初始化函数只是对结构体中的base和top指针进行了初始化!!!

2.c++中的struct和c中的struct,typedef struct 用法有一点不一样,需要注意!大家可以去网上找找看,有很详细的解释。

3.自打学了c++之后,c的指针的用法快忘得差不多了…调用函数要传递的是变量的地址,定义的函数头里要写上指针的形式。

最后

以上就是如意豆芽为你收集整理的试写一个算法,识别依次读入的一个以“@”为结束符的字符序列是否为形如“序列1&序列2”模式的字符序列。其中序列1和序列2都不含字符“&”,且序列2是序列1的逆序列。例如,“a+b&b+a”是属该模式的全部内容,希望文章能够帮你解决试写一个算法,识别依次读入的一个以“@”为结束符的字符序列是否为形如“序列1&序列2”模式的字符序列。其中序列1和序列2都不含字符“&”,且序列2是序列1的逆序列。例如,“a+b&b+a”是属该模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部