关闭

第八章十一题修改后(用栈实现)POWERBY KTL

473人阅读 评论(0) 收藏 举报

#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(datatype *str)
{
 linklist*q;
 int n,i,j;
 datatype ch;
 i=0;
 n=strlen(str);
 q=(linklist*)malloc(sizeof(linklist));
 while(i<(n/2))//i是为了记数,让一半的字符入栈;
 {
  PUSHL(&q,str[i]);
  i++;
 }
 i++;//使i指向未入栈的字符;
 j=n/2;//j的功能是控制后面的字符;
 while(i<n)
 {
  ch=str[n-j];
  if(ch!=POPL(&q))//调用的时候用了**;
   return false;
  j--;
  i++;
 }
 return true;
}//关键函数判断是否对称

int main()
{
 datatype str[100];
 printf("请输入字符串:");
 scanf("%s",str);
 if(MYFUNC(str)){
  printf("是对称字符串。。。/n");
  return 1;
 }
 else{
  printf("不是对称字符串。。。/n");
  return 0;
 }
 return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34030次
    • 积分:746
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条