算法:实现链表存储的回文字符串判断
来源:互联网 发布:php统计总访问量代码 编辑:程序博客网 时间:2024/06/05 20:20
题目:如何判断一个单链表结构的字符串是否是回文字符串。例如,“123454321”,返回“yes”;“12345”,返回“false”
可执行代码:isPalindrome.cpp
#include<iostream> #include<stack> #include<stdlib.h>using namespace std; typedef struct node{ int data; struct node *next; }LinkNode, *LinkList; class Solution {public: void create_list(LinkList *L, int *a, int n) { int i = 0; LinkNode *p = NULL; LinkNode *temp = NULL; while(i < n) { p = (LinkNode*)malloc(sizeof(LinkNode)); p->data = a[i]; p->next = NULL; if(*L == NULL) { *L = p; } else { temp->next = p; } temp = p; i++; } } // 判断回文字符串,使用栈实现逆序 int isPalindrome(LinkList head) { int length = 0; int mid = 0; int i; stack<LinkNode*> m_stack; LinkNode *p = head; LinkNode *temp = NULL; int flag = 1; while(p) { length++; p = p->next; } if(length %2 == 0) { mid = length / 2; } else { mid = length / 2 + 1; } p = head; i = 1; while(i <= mid - 1) { m_stack.push(p); p = p->next; i++; } if(length % 2 == 0) { m_stack.push(p); } p = p->next; while(!m_stack.empty() && p) { temp = m_stack.top(); m_stack.pop(); if(temp->data != p->data) { flag = 0; break; } p = p->next; } return flag; } }; int main() { int a[] = {1, 2, 3, 4, 5, 4, 3, 2, 1}; int n = sizeof(a) / sizeof(int); LinkList head = NULL; Solution S; S.create_list(&head, a, n); if(S.isPalindrome(head)) { cout << "yes" << endl; } else { cout << "no" << endl; } return 0;}
0 0
- 算法:实现链表存储的回文字符串判断
- 字符串回文判断, 链表回文判断
- 实现回文字符串判断 -- JAVA 算法学习
- 算法:判断字符串是否是回文的
- 【字符串处理算法】回文判断的算法设计及C代码实现
- 判断回文算法的代码实现
- 回文字符串的判断
- 回文字符串的判断
- 回文判断--链表实现
- 递归实现回文字符串判断
- c++实现字符串回文判断
- Java实现回文字符串判断
- 判断回文字符串 栈实现
- 判断一个字符串是否为回文的递归算法
- 判断一个字符串是否为回文的非递归算法
- 判断回文递归算法实现
- 回文数与回文字符串的判断
- 判断字符串是否是回文的代码实现
- 手机游戏资源 特效 显存分析工具
- 多线程:使用ImageView分类下载图片(模仿 SDWebImage)
- phpcms二次开发_创建功能模块
- 轮廓查找问题小记
- jQuery.form.js使用
- 算法:实现链表存储的回文字符串判断
- 美容护肤小技巧
- Java 构造器之构造器的隐式调用和显式调用
- iOS中GCD的使用小结
- DOM操作表格和样式
- 再生龙u盘制作及使用 - Linux - clonezilla
- STM32模拟IIC驱动OLED屏 原理+源码
- 根据并发访问量级来演变Mysql架构
- ubuntu14.04设置SublimeText3支持中文并设为默认编辑器