| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3300 人关注过本帖
标题:[原创]回文算法
只看楼主 加入收藏
xbdeig
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2006-8-7
收藏
得分:0 

#include<stdio.h>
#include<stdlib.h>
typedef char datatype;
typedef struct stacknode{
datatype data;
struct stacknode *next;
}stacknode;

typedef struct {
stacknode *top;
}linkstack;

//置空栈
void initstack(linkstack *p)
{
p->top=NULL;
}
//判断是否空栈
int stackempty(linkstack *p)
{
return p->top==NULL;
}
//入栈
void push(linkstack *s,datatype x)
{
stacknode *q=(stacknode*)malloc(sizeof(stacknode));
q->data=x;
q->next=s->top;//将新结点*p插入链栈头部
s->top=q;
}
//退栈
datatype pop(linkstack *S)
{
datatype x;
stacknode *p=S->top;//保存栈顶指针
if(stackempty(S))
{}
// Error("Stack underflow."); //下溢
else
{
x=p->data; //保存栈顶结点数据
S->top=p->next; //将栈顶结点从链上摘下
free(p);
return x;
}
}
int huiwen(char *str)
{

linkstack *T=( linkstack* )malloc( sizeof(linkstack) );
int i , L;
char t;
initstack(T);
L=strlen(str); //求向量长度
for (i=0; i<=(L/2);i++)
{push(T,str[i]);
}
while( !stackempty(T))
{
// 每弹出一个字符与相应字符比较
t=pop(T);
if( t!=str[L-i]) { return 0 ;}// 不等则返回0
i--;
}
return -1 ; // 比较完毕均相等则返回 -1
}

int main(void)
{
char str[100];
canf("%s",str);
if(huiwen(str))
printf(" \n这个字符串是回文。");
else printf("\n这个字符串不是回文。");
}


授人以鱼不如授人以渔
2006-09-03 11:13
快速回复:[原创]回文算法
数据加载中...
 
   



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

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