0
点赞
收藏
分享

微信扫一扫

判断单链表是否存在回文

中间件小哥 2022-03-10 阅读 183

回文即就是 “123454321”,“abcba"满足这样的数据链表,需要两个指针,一个指向头,一个指向尾,一个向后走,一个向前走,判断数据是否相等。但是单链表无法从后节点指向前节点,因此将单链表中数据拷贝到数组中进行判断。

代码实现如下:

//判断单链表是否回文
bool IsPail(PNode plist)
{
	//需要两个指针,一个指向头,一个指向尾,一个向后走,一个向前走,判断数据是否相等
	//单链表无法从后节点指向前节点,因此将单链表中数据拷贝到数组中进行判断
	int len = Get_length(plist);
	ELEM_TYPE* tmp = (ELEM_TYPE*)malloc(len * sizeof(ELEM_TYPE));
	assert(tmp != NULL);

	int i = 0;
	for (PNode p = plist; p->next = NULL; p = p->next)
	{
		tmp[i++] = p->data;
	}
	int left = 0;
	int right = len - 1;
	while (left < right)
	{
		if (tmp[left] != tmp[right])
		{
			return false;
		}
	}
	return true;
}
举报

相关推荐

0 条评论