c语言版 数据结构问题

假设以块链结构作为串的存储结构。试编写判别给定串是否具有对称性的算法,并要求算法的时间复杂度O(strlenth(s))... 假设以块链结构作为串的存储结构。试编写判别给定串是否具有对称性的算法,并要求算法的时间复杂度O(strlenth(s)) 展开
 我来答
ad饕饕不绝
2009-04-02 · TA获得超过596个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:0
展开全部
1.找到结构的头(H)和尾(R)
2.
下面是伪代码
while(H在R之前) do begin

if data_at[H]!=data_at[R] then return false;//肯定不对称
H<-后继;
R<-前驱;
end;
return true;
时间复杂度O(strlen(s))
既为表长
乐意丶2
2018-04-02 · TA获得超过846个赞
知道答主
回答量:116
采纳率:100%
帮助的人:9.8万
展开全部
bool IsPalindrome(const LString &s)
{//判断串s是否回文
if (!s.curlen || s.curlen == 1)
return true;//如果是空串或者一个字符,则没必要判断

const Chunk *ps = s.head;
int i = s.curlen / 2, k = 0;//注意整数除法
char *hos = new char[i]; //存储字符串的一半

while (i)//取前一半字符到数组中
{
if (k > CHUNKSIZE - 1)
{
k %= CHUNKSIZE;
ps = ps->next;
}
hos[(i--) - 1] = ps->str[k++];//数组反向存储模拟栈
}
if (s.curlen % 2)//如果字符个数是奇数
{
++k;//忽略掉中间的一个字符
}
for (int j = 0; j < s.curlen / 2; ++j)//与另一半字符进行比较
{
if (k > CHUNKSIZE - 1)
{
k %= CHUNKSIZE;//取模
ps = ps->next;
}
if (hos[j] != ps->str[k++])
return false;
}
return true;//是回文
}

块链的结构和书本的定义是一摸一样的,不知道的话可以翻书。

还有,代码不是很好,有重复冗余的地方,不建议采用,但是算法的思想是没问题的,算法的时间复杂度是满足题目的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式