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

原创 2006年05月26日 17:32:00

#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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

十一、实现队列的方法二(单链表的复用)

通过对单链表代码的复用,实现队列 一、LinkList.h #ifndef _LINKLIST_H_ #define _LINKLIST_H_ typedef void...

单链表的实现-简单操作

  • 2016-11-18 22:50
  • 401KB
  • 下载

没有头结点的单链表[c语言实现]

#include #include /* * 单链表是线性表链式存储的一种,其储存不连续。 * 单链表的数据结构中包含两个变量:数据和指向下一结点的指针。 * 一个结点只知道他的下一个结点的地...

单链表的实现

  • 2013-10-06 21:39
  • 215KB
  • 下载

C语言实现单链表常见面试题

前面我们已经实现了单链表的基本功能,今天来实现一下单链表的一些常见的面试题 前面的英文注释的代码是单链表基本功能的实现(因为输入法的问题,所以是英文,不是装逼)后面的中文注释的就是单链表的一些常见的...

面试算法题-单链表的快速排序实现

面试时被问到单链表快速排序的问题,回来仔细实现下,面试时细节没有处理好只说出来一些思想。本人菜鸟请大家指教。 #include using namespace std; typedef s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)