精华内容
下载资源
问答
  • } } char top_stack(plinkstack plstack) { if(plstack->top==NULL) { printf("已空\n"); } else return(plstack->top->info); } struct linkqueue { char data; linkqueue *next; }; typedef struct linkqueue *...

    #include

    #include

    struct node;

    typedef struct node *pnode;

    struct node

    {

    char info;

    pnode link;

    };

    struct linkstack

    {

    pnode top;

    };

    typedef struct linkstack *plinkstack;

    plinkstack createnullstack()

    {

    plinkstack plstack;

    plstack=(plinkstack)malloc(sizeof(struct linkstack));

    if(plstack!=NULL)

    {

    plstack->top=NULL;

    }

    else printf("空栈建立失败\n");

    return plstack;

    }

    int isnullstack(plinkstack plstack)

    {

    return (plstack->top==NULL);

    }

    void push_stack(plinkstack plstack,char x)

    {

    pnode p;

    p=(pnode)malloc(sizeof(struct node));

    if(p==NULL)

    {

    printf("进栈结点申请失败\n");

    }

    else

    {

    p->info=x;

    p->link=plstack->top;

    plstack->top=p;

    }

    }

    void pop_stack(plinkstack plstack)

    {

    pnode p;

    if(isnullstack(plstack))

    {

    printf("当前栈没有元素\n");

    }

    else

    {

    p=plstack->top;

    plstack->top=plstack->top->link;

    free(p);

    }

    }

    char top_stack(plinkstack plstack)

    {

    if(plstack->top==NULL)

    {

    printf("栈已空\n");

    }

    else return(plstack->top->info);

    }

    struct linkqueue

    {

    char data;

    linkqueue *next;

    };

    typedef struct linkqueue *plinkqueue;

    struct queue

    {

    plinkqueue r;

    };

    typedef struct queue *pqueue;

    pqueue createnullqueue()

    {

    pqueue paqu;

    paqu=(pqueue)malloc(sizeof(struct linkqueue));

    if(paqu==NULL)

    {

    printf("创建空队列失败\n");

    }

    else paqu->r=NULL;

    return paqu;

    }

    int isnullqueue(pqueue paqu)

    {

    return (paqu->r==NULL);

    }

    void enqueue(pqueue paqu,char x)

    {

    plinkqueue p,q;

    p=(plinkqueue)malloc(sizeof(struct linkqueue));

    if(p==NULL)

    printf("申请入队结点失败\n");

    else

    {

    p->data=x;

    p->next=NULL;

    if(paqu->r==NULL)

    {

    paqu->r=p;

    paqu->r->next=paqu->r;

    }

    else

    {

    q=paqu->r->next;

    paqu->r->next=p;

    p->next=q;

    paqu->r=p;

    }

    }

    }

    void dequeue(pqueue paqu)

    {

    plinkqueue p;

    if(paqu->r->next==paqu->r)

    {

    p=paqu->r;

    paqu->r=NULL;

    free(p);

    }

    else

    {

    p=paqu->r->next;

    paqu->r->next=paqu->r->next->next;

    free(p);

    }

    }

    char front_queue(pqueue paqu)

    {

    if(paqu->r==NULL)

    {

    printf("当前队为空\n");

    }

    else return (paqu->r->next->data);

    }

    int main()

    {

    plinkstack stack;

    pqueue paqu;

    char data;

    paqu=createnullqueue();

    stack=createnullstack();

    printf("请输入回文数,以#结束\n\n");

    scanf("%c",&data);

    while(data!='#')

    {

    push_stack(stack,data);

    enqueue(paqu,data);

    scanf("%c",&data);

    }

    while(!isnullqueue(paqu))

    {

    if(front_queue(paqu)==top_stack(stack))

    {

    dequeue(paqu);

    pop_stack(stack);

    }

    else

    {

    printf("NO\n");

    break;

    }

    }

    if(isnullstack(stack))

    printf("YES\n");

    }

    展开全文
  • 我自己写了一个,你看看/**********************************用栈和队列进行回文判断输入字符以@结束***********************************/#include/*定义一个栈*/typedef struct Stack{int size;char * Base;char *...

    我自己写了一个,你看看

    /**********************************

    用栈和队列进行回文判断

    输入字符以@结束

    ***********************************/

    #include

    /*定义一个栈*/

    typedef struct Stack

    {

    int size;

    char * Base;

    char * Top;

    }Stack;

    /*创建一个栈*/

    void CreateStack(Stack * S,int size)

    {

    S -> size = size;

    S -> Base = (char *)malloc(size);

    S -> Top = S -> Base;

    }

    /*推入一个元素*/

    void Push(Stack * S,char c)

    {

    /*栈满了,不能插入了*/

    if(S -> Top - S -> Base == S -> size)

    {

    printf("Stack is full and can't push!");

    return;

    }

    else

    {

    *(++S -> Top) = c;

    }

    }

    void Pop(Stack * S)

    {

    /*栈空了*/

    if(S -> Top == S -> Base)

    {

    printf("Stack is empty!");

    return;

    }

    else

    {

    S -> Top--;

    }

    }

    void main()

    {

    Stack S;

    int Begin;

    char c;

    CreateStack(&S,100);

    Begin = 0;

    while(1)

    {

    scanf("%c",&c);

    if(c == '@')

    break;

    if(c == '&' && !Begin)

    {

    Begin = 1;

    continue;

    }

    if(Begin)

    {

    if(*(S。

    Top) == c)

    {

    Pop(&S);

    }

    }

    else

    Push(&S,c);

    }

    if(S。Top == S。Base)

    {

    printf("ok\n");

    }

    else

    {

    printf("fail\n");

    }

    getch();

    }。

    全部

    展开全文
  • 展开全部用栈实现了判断回文数的操作,即把字符串依次32313133353236313431303231363533e58685e5aeb931333262353461入栈,然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:#include...

    展开全部

    用栈实现了判断回文数的操作,即把字符串依次32313133353236313431303231363533e58685e5aeb931333262353461入栈,然后出栈并依次和字符数组比较是否相等,从而判断字符序列是否回文数,代码如下:

    #include "stdio.h"

    #include "stdlib.h"

    #include "string.h"

    #define EMPTY 0

    #define FULL 10000

    #define MAX 10000

    typedef char data;

    typedef struct elem {

    data d;

    struct elem *next;

    }elem;

    typedef struct stack {

    int cnt;

    elem *top;

    }stack;

    void initialize(stack *stk);

    void push(data d, stack *stk);

    data pop(stack *stk);

    bool empty(const stack *stk);

    bool full(const stack *stk); //栈操作函数

    void initialize(stack *stk)

    {

    stk->cnt = 0;

    stk->top = NULL;

    }

    bool empty(const stack *stk)

    {

    return stk->cnt == EMPTY;

    }

    bool full(const stack *stk)

    {

    return stk->cnt == FULL;

    }

    void push(data d, stack *stk)

    {

    elem *p;

    if (!full(stk))

    {

    p = (elem *)malloc(sizeof(elem));

    p->d = d;

    p->next = stk->top;

    stk->top = p;

    stk->cnt++;

    }

    }

    data pop(stack *stk)

    {

    data d;

    elem *p;

    if(!empty(stk))

    {

    d = stk->top->d;

    p = stk->top;

    stk->top = stk->top->next;

    stk->cnt--;

    free(p);

    }

    return d;

    }

    int main(void)

    {

    data input[MAX];

    stack temp;

    int i = 0;

    int flag = 0;

    initialize(&temp); //初始化临时栈

    scanf("%s", &input); //输入字符串

    while (input[i] != '@')

    {//字符串入栈

    push(input[i], &temp);

    i++;

    }

    while (!empty(&temp))

    {//字符依次出栈和字符数组比较,判断是否回文数

    if (temp.top->d == input[flag])

    {

    pop(&temp);

    flag++;

    }

    else

    {

    printf("此字符序列不是回文数!\n");

    break;

    }

    }

    if (empty(&temp))

    printf("此字符序列是回文数!\n");

    return 1;

    }

    运行结果:

    53f45b3f7aa46052505c7833e9a01357.png

    展开全文
  • 12321,你是不是你,这样的东西叫回文,由于队列和的存储方式不同,是LIFO,last in first out ,盘子一个一个堆,堆完后从上面开始拿;队列是FIFO,first in first out, 就像现实的排队。将数字存进这两种结构中...

    12321,你是不是你,这样的东西叫回文,由于队列和栈的存储方式不同,栈是LIFO,last in first out ,盘子一个一个堆,堆完后从上面开始拿;队列是FIFO,first  in first out, 就像现实的排队。将数字存进这两种结构中,逐一取出,如果相同,那就是回文数。

    StackAndQueqe.h

    #include

    typedef char DataType;

    typedef struct Node *PNode;

    struct Node{

    DataType info;

    PNode link;

    };

    typedef struct LinkQueqe *PQueqe;

    struct LinkQueqe{

    PNode f;

    PNode b;

    };

    typedef struct LinkStack *PStack;

    struct LinkStack{

    PNode top;

    };

    PStack createStack();

    int isEmptyStack(PStack pstack);

    void pushStack(PStack pstack,DataType element);

    DataType popStack(PStack pstack);

    DataType topStack(PStack pstack);

    void printStack(PStack pstack);

    PQueqe createQueqe();

    int isEmptyQueqe(PQueqe pqueqe);

    void pushQueqe(PQueqe pqueqe,DataType element);

    DataType popQueqe(PQueqe pqueqe);

    DataType topQueqe(PQueqe pqueqe);

    void printQueqe(PQueqe pqueqe);

    StackAndQueqe.c

    #include "StackAndQueqe.h"

    PQueqe createQueqe(){

    PQueqe pqueqe = (PQueqe)malloc(sizeof(struct LinkQueqe));

    if(pqueqe == NULL) printf("create fail");

    pqueqe ->f = NULL;

    pqueqe ->b = NULL;

    return pqueqe;

    }

    int isEmptyQueqe(PQueqe pqueqe){

    return (pqueqe ->f == NULL);

    }

    void pushQueqe(PQueqe pqueqe,DataType element){

    PNode p = (PNode)malloc(sizeof(struct Node));

    if(p == NULL) printf("nothing push");

    p ->info = element;

    p ->link = NULL;

    if(pqueqe ->f == NULL){

    pqueqe->f = p;

    //printf(" f %5d\n",pqueqe->f->info);

    }

    else pqueqe ->b ->link = p;

    pqueqe ->b = p;

    //printf("b %d\n",pqueqe->b->info);

    }

    DataType popQueqe(PQueqe pqueqe){

    PNode p;

    DataType temp;

    if(isEmptyQueqe(pqueqe)) printf("queqe is empty");

    p = pqueqe ->f;

    temp = p->info;

    pqueqe ->f = p->link;

    free(p);

    return temp;

    }

    DataType topQueqe(PQueqe pqueqe){

    if(pqueqe->f == NULL){

    printf("nothing top");

    return NULL;

    }

    return pqueqe -> f->info ;

    }

    void printQueqe(PQueqe pqueqe){

    PNode p = pqueqe ->f;

    if(isEmptyQueqe(pqueqe)){

    printf("nothing print");

    }

    while(pqueqe->f!= NULL){

    printf("%3c",pqueqe->f->info);

    pqueqe ->f = pqueqe ->f ->link;

    }

    pqueqe ->f = p;//此处的f随着link的变化变化 最后需要还原回去!

    }

    PStack createStack(){

    PStack pstack = (PStack)malloc(sizeof(struct LinkStack));

    if(pstack == NULL) printf("create fail");

    pstack ->top = NULL;

    return pstack;

    }

    int isEmptyStack(PStack pstack){

    return(pstack->top == NULL);

    }

    void pushStack(PStack pstack,DataType element){

    PNode p = (PNode)malloc(sizeof(struct Node));

    if(p == NULL) printf("push fail");

    p ->info = element;

    p ->link = pstack ->top;

    pstack ->top = p;

    }

    DataType popStack(PStack pstack){

    PNode p;

    DataType temp;

    if(pstack ->top == NULL) printf("nothing pop");

    p = pstack ->top;

    temp = p->info;

    pstack ->top = pstack->top->link;

    free(p);

    return temp;

    }

    DataType topStack(PStack pstack){

    if(pstack ->top == NULL){

    printf("nothing pop");

    return NULL;

    }

    return pstack->top->info;

    }

    void printStack(PStack pstack){

    PNode p= pstack ->top;

    if(pstack ->top == NULL){

    printf("nothing pop");

    }

    while(pstack->top != NULL){

    printf("%3c",pstack ->top ->info);

    pstack ->top = pstack ->top ->link;

    }

    pstack ->top = p;

    }

    #include "StackAndQueqe.h"

    int main(){

    int i;

    char s[100];

    int n=0;

    PQueqe pqueqe ;

    PStack pstack;

    printf("please input string to judge whether it is a palindrome(回文数):\n");

    scanf("%c",&s[0]);

    while(s[n]!='\n')

    {

    scanf("%c",&s[++n]);

    }

    printf(" the length is %d: \n",n);

    printf(" the string is : ");

    for(i=0;i

    printf("%c",s[i]);

    }

    pqueqe = createQueqe();

    for(i=0;i

    //printf("\n%c",s[i]);

    pushQueqe(pqueqe,s[i]);

    }

    pstack = createStack();

    for(i=0;i

    pushStack(pstack,s[i]);

    }

    printf(" \nthe queqe is : ");

    printQueqe(pqueqe);

    printf(" \nthe stack is : ");

    printStack(pstack);

    printf(" \n");

    for(i=0;i

    if(popQueqe(pqueqe)!= popStack(pstack)){

    printf("is not HUIWEN!\n");

    break;

    }

    else {

    printf("it is HUIWEN!\n");

    break;

    }

    }

    return 0;

    }

    简单的话只需要取出的数切半对比就行了。

    展开全文
  • 栈是一种先进后出的数据结构,队列是先进先出的结构。对于测试一个字符串是否是...但是我考虑用栈和队列来解决这个问题,利用它们的特性。由于我使用的是.net里面自带的Queue,Stack,他们都是泛型类型,初始化:Que...
  • 回复 2楼 yuccn#include #define N 82typedef struct node ...struct node{char data[N];int front;int rear;};typedef struct snode sqstack;struct snode{char elem[N];int top;};void init_sqstack(sqstack &...
  • 用栈判断回文

    千次阅读 2017-02-23 10:05:31
    “` ...import java.util.Scanner;... * 用栈判断是否是回文,中点以前压入栈,然后再出站一一和中点以后的进行对比,若都相等,出站完毕 * 为回文,否则为否 */ public static void main(String[] args) { cha
  • 从键盘输入的是字符,不要有空格,要不 就判断错了(因为空格也是字符) package text_4; import java.io.IOException; import java.util.Scanner; public class Stack_Queue { private Node_char head=new ...
  • 题目要求: 给定一个单链表,请...因此,一个辅助,把链表元素依次入栈,然后,再依次出栈,一个个比较出栈元素和链表从头遍历的元素是否相同,就可以判断是否是回文链表。 注意: 常规思路是需要一个辅助的,
  • 大一的时候老师上课的经典例子就是回文字符串判断,我觉得经典,...是不是想到了什么,没错,就是(FIFO),这个就可以很好的解决这个问题啦~ public class HuiWenString {  public String isHuiWen(String string){
  • 最近写作业写到回文用栈判断,我是将字符串push后在pop,然后比较两个字符串是否相同,相同就是回文字符串,不同就不是。以下是我的代码,有些粗糙,希望能得到大家的指导。 package data; /** * 将str压...
  • 实现方式,辅助,遍历链表存入中。之后pop中元素与链表数据比较,相同着是回文结构。public static boolean isPalindrome(ListNode head) { if (head == null) return false; Stack<ListNod
  • 判断一个链表是否为回文链表。 示例 1: 输入: 1-&gt;2 输出: false 示例 2: 输入: 1-&gt;2-&gt;2-&gt;1 输出: true 进阶: 你能否 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 方法1...
  • 题目 请判断一个链表是否为回文链表。 示例 1: 输入: 1->...创建一个数据或者来存储链表中的所有值,通过首尾的匹配来判断是否回文 将链表一分为2,将其中一个反转,遍历是否相等 java 创建...
  • 链表之回文链表

    2019-10-10 19:26:04
    1.判断回文链表 Leetcode 234;easy; 此题用栈很简单。 为了最优解,采用reverse前半段或者后半段链表,依次比较即可! package linkedlist; import java.util.Stack; public class Main0234回文链表 { public ...
  • 8. 链表 - 回文链表

    2020-12-21 21:04:33
    判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 2.解题 方法一: 利用先进后...
  • leetcode234-回文链表

    2020-03-16 22:11:56
    判断一个链表是否为回文链表。 示例 输入: 1->2 输出: false 输入: 1->2->2->1 输出: true 进阶:你能否 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 解题思路 1.利用 不过不满足空间复杂度为O...
  • 考虑到时间复杂度和空间复杂度要求,我们使用判断,一次读取即可,一半进栈,然后退与剩下一半一次对比,出现不一致就结束,全部对比完的话就是true,某人要链表结构那就吧。 代码: import java.u...
  • 相邻字符是回文判断逻辑不对 长度为2个以上串的内循环注意事项(有两个指针) 2. 链表删除倒数第n个节点 删除倒数第n个,要找到第n+1个,否则会把倒数n-1个删除掉 3. 合并两个有序链表 循环完毕,注意了不要...
  • 11.9 如何判断回文数字 11.10 小结 第12章 逻辑推理类面试题 12.1 脑筋急转弯 12.1.1 中国有多少辆汽车 12.1.2 下水道的盖子为什么是圆形的 12.1.3 分蛋糕 12.2 逻辑推理 12.2.1 哪个开关控制哪盏灯 12.2.2 戴帽子 ...
  • java范例开发大全

    2013-03-08 20:06:54
    实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 ...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例28 如何判断回文数字 42  3.4 do…while语句 43  实例29 输出100之间的所有奇数 44  实例30 求最大的随机数 44  3.5 switch语句 45  实例31 判断字母分类 46  实例32 优良及差 47  实例...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例28 如何判断回文数字 42  3.4 do…while语句 43  实例29 输出100之间的所有奇数 44  实例30 求最大的随机数 44  3.5 switch语句 45  实例31 判断字母分类 46  实例32 优良及差 47  实例33 打印...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 ...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 ...
  • 回文判断用栈, 首先找到中点. 回文链表 import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Palindrom...
  • 链队、数组队、用栈实现队 和 测试案例 链栈、数组栈、最小栈、最小栈优化、计算器的实现、括号匹配问题、队列实现栈 和 测试案例 树 二叉树 二叉树的序列化和反序列化 二叉树按层(S形、先序、中序、后序...
  • 2.2.7 随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能字符串库函数 2.2.8 求2~2000的所有素数.有足够的内存,要求尽量快 2.2.9 A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

java用栈判断回文

java 订阅