数据结构 实验2
回文判断
班级:java092
学号:200907092240
姓名:赵冬冬
实验一 回文判断
一、实验目的
熟练栈和队列的各种操作。
二、实验内容
1.同时建立一个栈和一个队列,即:每从键盘上输入一个字符,就把它作为一个新的栈和队列结点的数据域,插入到栈和队列。这样就同时建立了一个栈和一个队列。然后,让栈出栈的同时队列出队,比较它们是相等。
2.设计简单的程序实现回文判断的操作,加注释!
//回文判断.cpp
#include<stdio.h>
#include<stdlib.h>
typedef struct Node //定义队列结点类型
{
char data;
struct Node *next;
}Linkqueuenode;
typedef struct {
Linkqueuenode *front;//定义队列的对首指针
Linkqueuenode *rear;//定义队列的对尾指针
}Linkqueue;
typedef struct node //定义栈结点类型
{
char data;
struct node *next;
}LinkStackNode,*LinkStack;
void push( LinkStack top,char x) //进栈
{
LinkStackNode *temp; //创建新结点
temp=(LinkStackNode *)malloc(sizeof(LinkStackNode));//分配空间
temp->data=x;//接点赋值
temp->next=top->next;
top->next=temp;//数据进栈
}
void getinmain() //功能界面
{
printf(" \t\t__________________________________________\n");
printf("\t\t\t\t回文检测\t\t\n");
printf("\n\n");
printf("\t\t\t\t1. 输入字符串\n");
printf("\t\t\t\t2. 检测是否为回文 \n");
printf("\t\t\t\t3. 退出 \n");
printf("\n请按指定的数字进行相应的操作:\n");
}
int queue(Linkqueue *q) //初始化队列
{
q->front=(Linkqueuenode *)malloc(sizeof(Linkqueuenode));//队列分配空间
if(q->front!=NULL)//判断队是否为空
{
q->rear=q->front;//初始化队,使队为空
q->front->next=NULL;
return 1;
}
else return 0;
}
int enter(Linkqueue *q,char x) //入队操作
{
Linkqueuenode *newnode;//创建新结点
newnode=(Linkqueuenode *)malloc(sizeof(Linkqueuenode));//队列分配空间
if(newnode!=NULL)
{
newnode->data=x;//结点赋值
newnode->next=NULL;
q->rear->next=newnode;//数据入队
q->rear=newnode;
return 1;
}
else return 0;
}
void pushenter(LinkStack top,Linkqueue *q) //一个元素同时进栈和入队
{
printf("请输入元素并以$结束\n");
char x;//进栈和入队的元素
scanf("%c",&x);
while(x!='$')//输入$字符是停止循环
{
push(top,x);enter(q,x);scanf("%c",&x);//元素同时进栈和入队
}
printf("数据进栈入列成功!\n");
}
void check(LinkStack top,Linkqueue *p)//检测是否为回文数
{
char a,b;
int c=0;
Linkqueuenode *q;
LinkStack w;
w=top->next;
q=p->front->next;
while(q!=NULL&&w->next!=NULL)//判断队列和栈是否为空
{
a=w->data;//队列和栈不为空则进行出队和出栈操作
b=q->next->data;
q=q->next;
w=w->next;
printf("a=%c b=%c\n",a,b);
if(a!=b)//检测是否为回文数
{
c=1;
printf(">>>>>>>>>>>>>>>>不为回文<<<<<<<<<<<<<<<<<\n");
break;
}
}
if(c==0)
printf("\n>>>>>>>>>>>>>>>>为回文<<<<<<<<<<<<<<<<<\n");
}
void main()
{
LinkStackNode top;//声明一个栈结点
top.next=NULL;//将栈顶值为空
Linkqueue q;
queue(&q);//初始化队列
system("pause");
system("cls");
s: getinmain();//进入功能选择界面
int b;
scanf("%d",&b);//选择功能
switch(b)
{
case 1:pushenter(&top,&q);system("pause");system("cls");
goto s;
case 2:check(&top,&q);system("pause");system("cls");
goto s;
case 3:exit(0);
};
}
//实现各子函数并且加注释
运行结果如下图:
1、主菜单运行图
2、输入数据
2、检验是否为回文
三、编程并上机调试运行
四、时间、地点
20##-4-8(星期五)软件学院机房
五、指导教师 邢莹
(在书写过程中若出现错误,望老师指出,谢谢)
数据结构实验报告格式实验11顺序表的基本操作一实验目的1掌握使用VC上机调试线性表的基本方法2掌握线性表的基本操作插入删除查找等运…
东北大学秦皇岛分校数据结构与算法统计学专业实验报告班级学号7020xx1姓名胡鹏实验日期20xx0929仪器编号A01实验名称实验…
数据结构实验报告格式实验1线性表的基本操作一实验目的1掌握使用VC上机调试线性表的基本方法2掌握线性表的基本操作插入删除查找等运算…
数据结构实验报告书专业班级网133学号139074333姓名江文杰教师王喜凤实验一用栈判断字符串是否回文1实验日期20xx年4月1…
数据结构与算法实验报告专业班级姓名学号实验项目实验一二叉树的应用实验目的1进一步掌握指针变量的含义及应用2掌握二叉树的结构特征以及…
报告格式说明数据结构实验,实验成绩占该科成绩20%。实验报告抄袭者,一经发现实验成绩为0;实验报告不交者,该科成绩为0。参考资料:…
实验报告格式一实验目的二实验内容实验内容包括1程序要求2根据程序要求写出程序源程序两部分内容三程序调试过程记录四实验结果实验结果包…
数据结构实验报告实验名称数据结构与算法专业班级数学与应用数学1201班学号1304120xx6姓名谢伟指导老师陈明0目录1前言22…
本科生实验报告二姓名学院专业班级实验课程名称数据结构实验日期20xx年5月25日指导教师及职称实验成绩开课时间20xx20xx学年…
数据结构实验报告湖南师范大学工程与设计学院数据结构实验报告姓名王新建年级20xx级专业应用电子技术教育学号20xx180320任课…