BWM Studio

The Blow Water Machines...

第八章十一题,修改了 ,用单链表实现str.(不好意思又看错条件了,这次没有错误了。)powerby KTL

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

typedef char datatype;

typedef struct node
{
 datatype data;
 struct node * pNext;
}linklist;

void PUSHL(linklist **S,datatype e)
{
 linklist *p;
 p=(linklist*)malloc(sizeof(linklist));
 p->data=e;
 p->pNext=*S;
 *S=p;
}//入栈
datatype POPL(linklist **S)
{
 datatype X;
 if((*S)==NULL)
 {
  printf("栈溢出/n");
  return -1;
 }
 else
 {
  X=(*S)->data;
  (*S)=(*S)->pNext;
  return(X);
 }
}//出栈

bool MYFUNC(linklist *strl)
{
 linklist*q,*p;
 int n=0,i=0;
 datatype ch;
 p=strl;
 while(p)
 {
  p=p->pNext;
  n++;
 }
 p=strl;
 q=(linklist*)malloc(sizeof(linklist));
 while(i<(n/2))//i是为了记数,让一半的字符入栈;
 {
  PUSHL(&q,p->data);
  p=p->pNext;
  i++;
 }
 i++;//使i指向未入栈的字符;
 while(i<n)
 {
  if(i==(n+1)/2)//判断是否偶数个字符;
   p=p->pNext;
  ch=p->data;
  if(ch!=POPL(&q))//调用的时候用了**;
   return false;
  p=p->pNext;
  i++;
 }
 return true;
}//关键函数判断是否对称

int main()
{
 datatype str[100];
 int i=0;
 linklist * strl,*p,*h;
 strl=(linklist *)malloc(sizeof(linklist));
 h=strl;
 printf("请输入字符串:");
 scanf("%s",str);
 strl->data=str[i];
 i++;
 strl->pNext=NULL;
 while(str[i]!='/0')
 {
  p=(linklist *)malloc(sizeof(linklist));
  p->data=str[i];
  i++;
  strl->pNext=p;
  strl=p;
  strl->pNext=NULL;
 }
 strl=h;
 if(MYFUNC(strl)){
  printf("是对称字符串。。。/n");
  return 1;
 }
 else{
  printf("不是对称字符串。。。/n");
  return 0;
 }
 return 0;
}

阅读更多
文章标签: struct null include
上一篇第八章十一题powerby spritsq
下一篇第8章第11题的完整程序(Powered by biggates)
想对作者说点什么? 我来说一句

NHibernate配置文件生成器.rar

2012年02月28日 665KB 下载

qtaddressbook中间代码

2012年08月08日 922KB 下载

php 验证码实现

2018年05月18日 30KB 下载

2010年广州亚运会倒计时

2010年01月11日 904KB 下载

电信业务资料文档

2012年05月03日 1.72MB 下载

hibenate学习资料

2012年06月03日 1.44MB 下载

没有更多推荐了,返回首页

关闭
关闭