设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称
2016-01-14 16:23
686 查看
转载请注明出处:http://blog.csdn.net/u012860063
代码例如以下:
问题:设单链表中存放n个字符。试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串。
代码例如以下:#include<cstdio> #include<cstdlib> #include<cstring> #define LEN sizeof(struct node) #define MAX 147 struct node { char cc; struct node *next; }; int judge(struct node *head,int len) { struct node *top,*p1,*p2; top = NULL; p1 = head->next; for(int i = 0 ; i < len/2 ; i++) { p2 = (struct node *)malloc(LEN); p2->cc = p1->cc; p2->next = top; top = p2; p1 = p1->next; } if(len%2 == 1) p1 = p1->next; p2 = top; for(i = 0 ; i < len/2 ; i++) { if(p2->cc != p1->cc) break; top = p2->next; p1 = p1->next; p2 = top; } if(!top) return 1; else return 0; } int main() { int n=0; char str[MAX]; struct node *head,*p; head = p = (struct node *)malloc(LEN); head->next = p->next = NULL; printf("亲、请输入一个字符串:\n"); gets(str); int len = strlen(str); while(n < len && str[0] != '\n') { p = (struct node *)malloc(LEN); p->cc = str ; p->next = head->next; head->next = p; n++; } int flag = judge(head,len); if(flag) printf("%s是一个回文!\n",str); else printf("%s不是一个回文!\n",str); return 0; }
相关文章推荐
- F5记录连接表脚本
- 计算输入框的字符个数
- go基本语法学习笔记之类型
- 8个hybrid app开发工具
- namespace的用法
- eclipse的.properties文件中文显示问题
- SharePoint Server 2016 Beta 2 中的新增功能(1)
- linux mysql-bin二进制日志清除
- HDU 1020 Encoding
- Iframe使用总结
- Mysql 关键字-保留字
- 基于netty的文件上传于下载
- 一个防止误删MSSQL数据库的方法
- Xcode-调试断点不能停在代码区终极解决方案
- receiving PO system throws an error “The transactions on voucher do not balance as per XXXXX
- nginx location反向代理问题
- httpd-2.4的编译安装
- 删除一个目录下的所有文件但保留一个指定文件
- dwr的util的使用
- web前端之路(4)-- JavaScrit常用数组算法总结