当前位置 : 主页 > 编程语言 > java >

大学数据结构实验(三.栈和队列的应用一)

来源:互联网 收集:自由互联 发布时间:2022-06-30
大学程序实验.数据结构.栈和队列的应用一.判断"回文"问题 ​​0 目录​​ ​​3 栈和队列的应用​​ ​​3.1 判断"回文"问题​​ ​​3.1.1 题目​​ ​​3.1.2 源码​​ ​​1.1.3 下载​


大学程序实验.数据结构.栈和队列的应用一.判断"回文"问题

  • ​​0 目录​​
  • ​​3 栈和队列的应用​​
  • ​​3.1 判断"回文"问题​​
  • ​​3.1.1 题目​​
  • ​​3.1.2 源码​​
  • ​​1.1.3 下载​​

  • ​​2 下一章​​

0 目录

3 栈和队列的应用

3.1 判断"回文"问题

3.1.1 题目

问题描述:所谓回文,是指从前向后顺读和从后向前倒读都一样的字符串。例如,did; pop; I was able elba saw I 等等。
实验要求:利用栈结构判断一个字符串是否是“回文”。

3.1.2 源码

/***********************************************************************
* 头文件包含
***********************************************************************/
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "malloc.h"

/***********************************************************************
* 本地宏定义
***********************************************************************/
#define VALUE 10
#define MAX 50
#define OK 1
#define ERROR 0

typedef int Status;
typedef char SElemType;

typedef struct
{
SElemType data[MAX];
int top;
}SqStack;

/*********************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status main()
{
void StackMenu();
Status Push(SqStack *s,SElemType e);
SElemType Pop(SqStack *s);
Status Palindromice(SElemType array[]);

SElemType array[VALUE];
StackMenu();

while(1)
{
printf("请输入一节字符串:");
gets(array);

if(array[0]!='\0')
{
int Re=Palindromice(array);
if(Re==1)
{
printf("该字符串是回文.\n");
}
else
{
printf("该字符串不是回文.\n");
}
}
else
{
printf("该字符串不是回文.\n");
}
printf("\n");
}

return OK;
}

/*********************************************************************
* 函 数 名 : StackMenu
* 函数功能 : 目录函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
void StackMenu()
{
printf("========回文判断========\n");
}

SqStack * InitStack()
{
SqStack *s;

s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;

return s;
}

/*********************************************************************
* 函 数 名 : Push
* 函数功能 : 压栈函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status Push(SqStack *s,SElemType e)
{
if(s->top==MAX-1)
{
printf("栈满!\n");
return ERROR;
}
else
{
s->top++;
s->data[s->top]=e;
}

return OK;
}

/*********************************************************************
* 函 数 名 : main
* 函数功能 : 弹栈函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
SElemType Pop(SqStack *s)
{
SElemType value;

if(s->top==-1)
{
printf("栈空!");
return 'e';
}
else
{
value=s->data[s->top];
s->top--;

return value;
}
}

/*********************************************************************
* 函 数 名 : main
* 函数功能 : 回文函数
* 参数列表 :
* 函数输出 :
*********************************************************************/
Status Palindromice(SElemType array[])
{
int i;
SqStack *s;
s=InitStack();
int Stack_LEN=strlen(array);

SElemType e;
for(i=0;i<Stack_LEN/2;i++)
{
Push(s,array[i]);
}

if(Stack_LEN%2)
{
i++;
}

while(i<Stack_LEN)
{
e=Pop(s);
if(e==array[i])
{
i++;
}
else
{
return ERROR;
break;

}
}
return OK;
}

1.1.3 下载

链接地址: ​​3.1_栈与回文.CPP​​

2 下一章

博客地址: ​​大学数据结构实验(三.栈和队列的应用二)​​


网友评论