| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 566 人关注过本帖
标题:[求助]新人问个关于栈的小题目
只看楼主 加入收藏
cloud0406
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-26
收藏
 问题点数:0 回复次数:1 
[求助]新人问个关于栈的小题目
试设计算法,利用栈,识别依次读入的一个以@为结束符的字符序列是否为形如"序列1&序列2"模式的字符序列,其中序列1和序列2都不含"&"且序列2是序列1的逆序


用C语言编....想了很久还是不知道怎么做
搜索更多相关主题的帖子: 新人 
2006-03-26 15:32
vigourpan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-11-30
收藏
得分:0 

[CODE]
#include<iostream.h>
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define slen 100


struct stack
{
int stacksize;
char *base,*top;
}

initstack(stack &s)
{
s.base=new char;
if(!s.base) cout<<"初始化空间失败!"<<endl;
s.top=s.base;
s.stacksize=100;
return s ;
}
void push(stack &s,char e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char *)realloc(s.base,(s.stacksize+10)*sizeof(char));
if(!s.base) cout<<"堆栈已经满!"<<endl;
s.top=s.base+s.stacksize;
s.stacksize+=10;
}
*s.top++=e;

}
pop(stack &s,char e)
{
if(s.top==s.base) cout<<"stack if empty!"<<endl;
else e=*--s.top;
return e;
}


main()
{
stack t;
int i=0,j;
char ch[30],c;
char str[]={"输入格式不正确!"};
cout<<"输入字符串并且以@字符结束例如: 123a&a321@ "<<endl;
initstack(t);
cin.getline(ch,30);
j=strlen(ch);
if(ch[j-1]!='@'||ch[j/2-1]!='&') {cout<<str<<endl; return; }
for(i=0;i<j-1;i++)
{ if(ch[i]=='&') break;
push(t,ch[i]);
}
for(++i;i<j-1;i++)
{ if(ch[i]!=pop(t,c))
{cout<<"该字符串不是回文!"<<endl; return ;}
}
cout<<"该字符串是回文!"<<endl;
return;

}

[/CODE]

2006-04-01 14:32
快速回复:[求助]新人问个关于栈的小题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033859 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved