问题 问答题

有n个字符的字符串,判断字符串是否对称。如xyzzyx和xyzyx都是中心对称的字符串。字符串放在单链、表中,并实现利用栈的入栈和出栈完成判断。

答案

参考答案:

 #include”stdio.h”#include”malloc.h”#include”string.h”#defingemax A00 { Chardata; Structnode*next; }LinkList; \*根据输入的字符(存储在字符数组中)建立一个单链表,newNode始终指向新的结点*LinkList*create(chars[]) { LinkList*head,*newNode,*tail; For(inti=0;s!=’\0’’;i++) { newNode=(LinkList*)① newNodeadata=② newNodeanCext=NULL; \*i=-0表示只输入了一个字符*If(i==0) { head=newNode; tail=head; } else {taolanext=newNode; tail=③ } } Returnhead; } \*定义栈的存储类型,栈指针是base和top*Typedefstruct { Char*base; Char*top; }stack; voidInitStack(stack&&) { s.base=(char*)malloc(max*sizeof(char)); s.top=④;}voidpush(stack&s,chare) { ⑤ } Chartop(stack&s,char&e) { ⑥ returne; } \*判断以单链表存储的字符串是否对称的函数*Intjukdge(LinkList*head) { Stacks; Chare; InitStack(s); LinkList*p=heada; While(p!=NULL) { ⑦;P=panext; } P=head; While(padata==⑧) P=panext; Else Break; } If(⑨) ReturnA; Else teturn0; } Voidmain() { Charstr[max]; While(A) { printf(“\n\n请输入字符串:“);gets(str); switch(⑩) { CaseA: printf(“\n%\S是中心对称字符串\n”,str); Break; Case0: prinft(“\n%S不是中心对称字符串\n”,str); Break;

选择题
单项选择题