回文数 (栈)数据结构

本文介绍了如何利用栈数据结构判断一个可能是无穷大的回文数。通过将输入的数存储为单链表,先将链表前半部分元素入栈,如果总数为奇数则跳过中间元素。接着,退栈并比较链表后移节点的值,若栈顶元素与链表节点值不等则说明不是回文数。最后,栈空且链表比较完毕则确定为回文数。
摘要由CSDN通过智能技术生成

回文数(栈)
由于输入的一个回文数可能无穷大,所以要求使用单链表存储该数。
【问题分析】
将用户输入的数以一个单链表的方式存储。从头扫描该单链表,将前面的一半元素入栈,若元素的总个数为奇数,则跳过中间的那个元素,然后开始循环:边退栈边在单链表中后移指针,若当前栈顶元素与单链表中当前节点的值域不相等,则退出循环。最后如果栈空且链表比较完毕,则是回文数,否则不是回文数。
以下:

#include<iostream>
#include<malloc.h>
#define StackSize 100
#define Stackadd 100
using namespace std;
typedef struct{
   
	char *base,*top;
	int size;
}Stack;
typedef struct LNode{
   
	char data;
	struct LNode *next;
}LNode, *LinkList;
void CreateStack(Stack &S){
   
	//生成空栈
	S.base = (char *)malloc(StackSize *sizeof(char));
	S.top = S.base;
	S.size = Stackadd;	 
}
void P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值