利用链栈和链队列判断字符串是否为回文

基本思想:
将需要判断的字符分别压入一个空链栈和空链队列中。当字符串全部压入栈和队列后,逐个弹出字符,对链栈和链队列弹出的字符逐个进行比较是否相等,由于栈是先进后出,队列是先进先出,从而相当于对字符串首尾行进比较,从而能判断出字符串是否为回文。
代码即详细注释如下:

#include<stdio.h>
#include<stdlib.h>

typedef char DataType;
struct Node//链栈空节点 
{
   
    DataType      data;
    struct Node*  next;
};
typedef struct Node  *PNode;
typedef struct Node  *LinkStack;
struct Queue
{
   
    PNode        f;//f指向链队列首元素
    PNode        r;//r指向链队列尾元素
};
typedef struct Queue *LinkQueue;

LinkStack SetNullStack_Link()//创建链栈头节点
{
   
    LinkStack top = (LinkStack)malloc(sizeof(struct Node));
    if (top != NULL) 
    top->next = NULL;//必须指定next为NULL,因为要进行头插法创建链栈
    else printf("Alloc failure");
    return top;
}

int IsNullStack_link(LinkStack top)//判断链栈是否为空
{
   
    if (top->next == NULL)
        return 1;
    else
        return 0;
}
void Push_link(LinkStack top
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值