设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)
我的代码 仅供参考

//判字符串是否回文 
#include<stdio.h>
#include<malloc.h>
#include<string.h>
//定义单链表结构类型
typedef char datatype;
typedef struct node
{  datatype data;
   struct node *next;
}linklist;
//定义顺序栈结构类型
const int maxsize=40;
typedef struct
{  datatype elements[maxsize];
   int top;
}stack;

void setnull(stack *&);
int length(linklist*);
void printlink(linklist*);
void create(linklist *&,datatype*);
void push(stack*,datatype);
datatype pop(stack*);
int symmetry(linklist*,stack*);//判字符串是否回文的函数声明

int main()
{
	linklist *head;stack *s;
	datatype str[80];
	gets(str);
	create(head,str);
	printlink(head);
	setnull(s);
	if(symmetry(head,s)) printf("字符串\"%s\"是回文\n",str);
	else printf("字符串\"%s\"不是回文\n",str);
}

//栈初始化
void setnull(stack *&s)
{
	s=(stack*)malloc(sizeof(stack));
	s->top=-1;
}

//求单链表长度
int length(linklist*head)
{  linklist *p=head->next;
   int n=0;
   while(p!=NULL){  n++;  p=p->next; }
   return n;
}

//输出单链表
void printlink(linklist*head)
{  linklist *p=head->next;
   while(p!=NULL)
   {  printf("%c",p->data);
      p=p->next;
   }
   printf("\n");
}

//建立具有头结点的单链表
void create(linklist *&head,datatype*str)
{  datatype *p=str;
   linklist *s,*r;
   head=(linklist*)malloc(sizeof(linklist));
   r=head;
   while(*p!='\0')
   {  
	  s=(linklist*)malloc(sizeof(linklist));
      s->data=*p;
	  r->next=s;
	  r=s;
	  p++;
   }
   r->next=NULL;
}

//顺序栈入栈
void push(stack*s,datatype e)
{
	s->top++;
	s->elements[s->top]=e;
}

//顺序栈出栈
datatype pop(stack*s)
{
	datatype temp;
	s->top--;
	temp=s->elements[s->top+1];
	return temp;
}
//添加判字符串是否中心对称算法
int symmetry(linklist*head,stack*s)
{	
	int l=length(head);
	linklist *p=head->next;
	for(int i=1;i<=l/2;i++)
	{
		push(s,p->data);
		p=p->next;
	}
	if(l%2==1)p=p->next;
	while(p!=NULL)
	{
		if(p->data==pop(s))
		{
			p=p->next;
		}
		else return 0;
	}
	return 1;
} 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐